Jak*_*kob 120 c# log4net .net-4.0
嘿,我在web.config中有这个配置
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="mylog.log" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="" />
<param name="Footer" value="" />
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n" />
<param name="Footer" value="[Footer]\r\n" />
<param name="ConversionPattern" value="%d [%t] %-5p %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
但log4net无法正常工作.我的项目编译得很好,我也没有调试错误.我告诉的行log.debug("somemessage")
可以正常运行,但我找不到mylog.log
文件,所以它在哪里?
Kir*_*oll 289
对于这种类型的事情,一个问题是确保XmlConfigurator
通过在以下行中放置以下行来将属性添加到程序集AssemblyInfo.cs
:
[assembly: log4net.Config.XmlConfigurator]
Run Code Online (Sandbox Code Playgroud)
否则log4net永远不会激活.
Rob*_*ine 48
我想log4net根本就没有记录,或者文件没有达到预期的水平.
首先,你真的打过电话吗?
XmlConfigurator.Configure()
Run Code Online (Sandbox Code Playgroud)
你代码中的任何地方?如果上面的xml片段在应用程序配置文件中,则此调用将起作用.如果xml片段在其自己的文件中,则需要使用.Configure(string)
获取文件路径的重载.如果没有这个调用(或者显然是Kirk Woll提到的程序集级别属性),那么log4net根本就不会记录.
如果您认为这一切都已完成,并且log4net应该是日志记录,那么您可能应该在进一步调试时为日志文件添加完全限定的路径.这将让你确定文件应该在哪里.
Ami*_*iri 30
还有另一个小问题,请看:http://logging.apache.org/log4net/release/manual/configuration.html#dot-config
该[assembly: log4net.Config.XmlConfigurator]
方法不适用于app.config.如果从app.config配置log4net,则必须使用该log4net.Config.XmlConfigurator.Configure()
方法.
ear*_*g42 18
这是我的log4net被证明是顽固的清单:
这些是最终使我的文件记录工作的步骤:
<appender name="MainLogger"...
<layout type="log4net.Layout.SimpleLayout"/>
<add key="log4net.Internal.Debug" value="true"/>
到您的appSettings
.对于ASPNET MVC项目添加
log4net.Config.XmlConfigurator.Configure();
到Global.asax.cs也有帮助:
log4net.Config.XmlConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)
我曾经历过日志记录系统无声地失败而不会引发异常的经历.我认为这是有道理的,因为如果记录器记录错误,那么如何记录它无法执行记录的错误?
因此,如果文件未在磁盘上创建,请首先查看文件系统权限,以确保您的应用程序正在运行的用户可以将新文件写入该磁盘位置.
出于测试目的,您可能希望手动在磁盘上创建应该写入的文件,并为每个人写入权限打开权限.如果记录器开始写入它,那么您知道它是基于权限而不是基于配置.
归档时间: |
|
查看次数: |
70744 次 |
最近记录: |