Nat*_*lus 5 log4net azure-worker-roles azure-diagnostics
我有许多工作者角色项目,我想利用log4net功能来记录信息.遗憾的是,我的日志中没有一个实际出现在我的输出窗口中.
我在调试器中跳过一个日志行,输出窗口反而吐出以下行:
'WaWorkerHost.exe'(CLR v4.0.30319:RdRuntime):已加载'C:\ WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Caching\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.Caching.dll ".跳过加载符号.模块已经过优化,调试器选项"Just My Code"已启用.
看到这是我的代码,我很困惑为什么我看到这个例外.下面是我的日志app.config设置:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Montetary.Agents.HappyBirthday.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
<log4net>
<appender name="AzureTraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<!-- can be any pattern you like -->
<conversionPattern value="%logger - %message" />
</layout>
</appender>
<!-- does not have to be at the root level -->
<root>
<level value="ALL" />
<appender-ref ref="AzureTraceAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
我试图在这个问题中遵循这个例子,但结果是一样的
您可以检查一些事项:
在写入日志文件之前是否调用 log4net 配置(仅一次就足够了):
log4net.Config.XmlConfigurator();
Run Code Online (Sandbox Code Playgroud)
接下来的事情是将刷新添加到您的配置中:
<appender name="AzureTraceAppender" type="log4net.Appender.TraceAppender">
<param name="ImmediateFlush" value="true" />
<layout type="log4net.Layout.PatternLayout">
<!-- can be any pattern you like -->
<conversionPattern value="%logger - %message" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
这将立即刷新消息。
确保已将 Azure 诊断配置为所有调试信息。
然后您可以启用调试内部log4net调试。请参阅此 log4net 常见问题解答页面上的内部调试。标准它应该记录到您已配置的侦听器。将 autoflush="true" 选项添加到跟踪元素。或者找到您可以写入并访问以读取日志的辅助角色目录。