拼命寻求解决方案,让log4net在Azure辅助角色中运行。慢慢地让我开玩笑。
我已按照此博客http://blog.tylerdoerksen.com/2012/04/17/logging-in-azure-part-2table-storage(谢谢)中列出的步骤进行操作,这似乎有意义,log4net日志记录在以下条件下就像梦一样:
当我将工作者角色服务部署到Azure时,它会在LogEntities表中记录任何内容。就是这一点,这一点非常令人沮丧。
我已在Worker Role app.config中打开log4net调试,我在WADLogsTable中看到以下跟踪
log4net:完成名为[TableStorageAppender]的appender。
就是这样。没有其他log4net调试信息,我通常希望看到自添加
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
到我的工作者角色app.config。
我正在使用Worker Role overridden Run方法配置log4net:
public override void Run()
{
try
{
XmlConfigurator.Configure();
ILog Logger = LogManager.GetLogger(GetType());
Trace.WriteLine("Trace: CheckInService.Run()");
Logger.Info("log4net: CheckInService.Run()");
//open the Service and do some other stuff etc
while (true)
{
Thread.Sleep(1800000);
}
catch (Exception ex)
{
Trace.TraceError("There was a problem opening the CheckInService");
}
}
这是我的完整app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" name="log4net" />
</configSections>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<log4net>
<appender type="Cloud.Services.Logging.TableStorageAppender, Cloud.Services.Logging" name="TableStorageAppender">
</appender>
<root>
<level value="All" />
<appender-ref ref="TableStorageAppender" />
</root>
</log4net>
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
</configuration>
日志记录appender(TableStorageAppender)实现在它自己的Assembly(Cloud.Services.Logging)中,但我假设这没有任何区别?
有人有任何想法吗?
答案 0 :(得分:0)
发布到Azure时是否包含Cloud.Services.Logging程序集(CopyLocal = True)?
答案 1 :(得分:0)
也许是一个缓冲问题?尝试在appender配置https://github.com/stemarie/log4net.Azure/issues/20#issuecomment-135891543
中设置bufferSize = 1