我们如何以粒度和范围登录Azure?控制相当于log4net?我们在IIS上运行的网络应用程序中使用log4net,这对我们非常有用。这也是Azure上最好的吗?
我们绝对更喜欢日志文件(as opposed to database entries),但如果在Azure中有更好的效果,我会接受改进。 Trace写入Azure中的表格的方式非常糟糕 - 我们绝对不会那么想。
我更喜欢日志文件的原因是很容易看到序列中发生的事情,这是我99%的时间所需要的。
这适用于具有多个实例的Azure Web应用程序。如果日志与每个实例不同,那就没问题了。
谢谢 - 戴夫
答案 0 :(得分:11)
这很简单。我使用以下log4net
配置将日志文件转储到Web应用程序根文件夹中(很容易更改为子文件夹):
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="my_web.log" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date{yyyy-dd-MM HH:mm:ss.fff} [%thread] %-5level %logger.%method [%property{NDC}] - %message%newline" />
</layout>
</appender>
</log4net>
然后我直接从Visual Studio检查日志文件(双击文件下载它)服务器资源管理器:
答案 1 :(得分:11)
我认为在Azure中本地存储日志文件时应该小心,因为这样做并不能保证。用于存储网站的VM可能会被重新映像,日志将丢失。
更好的解决方案是将Azure诊断与log4net结合使用(对于其他日志记录机制(如NLog)也是如此)。流程在这里是sumarrized:
将本地存储设置为写入日志文件的角色实例(虚拟机)上的位置。
向diagnostics.wadcfg文件添加元素,以指示Azure诊断程序在blob存储中创建和使用容器。
在其中添加元素以指示Azure诊断程序监视LogStorage本地资源位置中的日志记录文件夹。
这样,本地存储的日志将被复制到blob存储。
全文:http://justazure.com/microsoft-azure-diagnostics-part-1-introduction/
答案 2 :(得分:1)
记录Azure VM或云服务数据的最佳方法是使用Log4Net登录磁盘以及将所有实例的日志信息记录到Azure存储帐户。优点是您将获得更强大的解决方案。如果由于某种原因,Azure诊断程序在实时站点中中断,您仍然可以远程访问任何实例并尝试诊断问题。对于其他服务,例如Web应用程序,您无法远程访问实例,只需将信息记录到Azure存储帐户即可。
设置和测试需要半天或一天,但我希望能回答您的问题。