我正在尝试使用log4net将一些数据记录到www.logentries.com
我的问题是我尝试记录的所有内容都会显示在FileAppender中,但logentries.com上没有显示数据。
我试图获取一些错误信息并启用log4net内部日志记录,但该文件不包含任何错误消息。
在这一点上,我真的很无能为什么要检查可能的错误...
基本的日志记录代码就是这段代码
private static readonly ILog logger = LogManager.GetLogger(typeof(Logentries));
static void Main(string[] args) {
XmlConfigurator.Configure();
logger.Fatal("Fatal message");
}
我将此行添加到我的AssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", Watch = true)]
我的App.config设置如下:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="LeAppender" type="log4net.Appender.LogentriesAppender, LogentriesLog4net">
<ImmediateFlush value="true" />
<Debug value="true" />
<HttpPut value="false" />
<Ssl value="false" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d{ddd MMM dd HH:mm:ss zzz yyyy} %logger %: %level%, %m, " />
</layout>
</appender>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="C:\log-file.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LeAppender" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
<appSettings>
<add key="Logentries.Token" value="XXXXXX-XXXXXX-XXXXXXXXX-XXXXXXX" />
<add key="log4net.Internal.Debug" value="true" />
</appSettings>
答案 0 :(得分:4)
解决方案是在(最后)日志条目生成后等待足够长的时间。要么在它之后有足够的代码,要么不确定使用Task.Delay(1000)或类似的东西执行代码需要多长时间。
原因似乎是因为logentries appender在内部异步工作,程序可以在将日志发送到服务器之前完成并终止日志记录线程。不幸的是,没有真正的迹象表明这种情况发生了。
答案 1 :(得分:1)
我有同样的问题。即使一切似乎都设置正确,也没有记录到Logentries。其他的appender正在工作。
我启用了log4net调试日志记录(请参阅How to track down log4net problems)
......在我的案例中,结果证明是一个版本问题。 LeAppender需要1.24.0版本的log4net,我的应用程序使用的是1.2.10.0:
log4net:ERROR XmlHierarchyConfigurator: Could not create Appender [LeAppender] of type [log4net.Appender.LogentriesAppender, LogentriesLog4net]. Reported error follows.
System.IO.FileLoadException: Could not load file or assembly 'log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
答案 2 :(得分:0)
您可能想要更改appender的锁定模型以包含MinialLock
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
答案 3 :(得分:0)
很可能现在这是一个非常晚的回复,但是我遇到了同样的问题,在网上找不到任何有效的日子和日子。直到最后我才找到解决方案,并想到在这里更新,因为它可能有助于某人。
解决方案相当简单。 而不是这个
<appSettings>
<add key="Logentries.Token" value="XXXXXX-XXXXXX-XXXXXXXXX-XXXXXXX" />
</appSettings>
将标记包含在标记本身内。
<appender name="LeAppender" type="log4net.Appender.LogentriesAppender, LogentriesLog4net">
**<Token value="XXXXXX-XXXXXX-XXXXXXXXX-XXXXXXX"/>**
<ImmediateFlush value="true" />
<Debug value="true" />
<HttpPut value="false" />
<Ssl value="false" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d{ddd MMM dd HH:mm:ss zzz yyyy} %logger %: %level%, %m, " />
</layout>
</appender>
尽管Logentries的文档提到了在appsettings中添加令牌,但由于某些未知原因,它似乎从那里拿起令牌。
还要确保项目的目标.net框架是&gt; = 4.0
供您参考: 我正在使用
Log4net 1.2.15
LogentriesLog4net 2.8.0
LogentriesCore 2.8.0
希望这有助于某人。