我无法写入日志任何信息,错误,使用log4net调试,我尝试了所有给网络服务的permsission,每个人到目录asp.net临时文件夹,日志文件夹,甚至c:\,
它只是创建一个空文件。但不要写日志
可能是什么问题
THX 拉吉
答案 0 :(得分:9)
我的猜测是,在配置文件中,您没有指定布局模式。通常情况下,你的appender里面有这样的东西:
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
指定要写入日志的内容。如果你没有,我怀疑它会写什么。
我同意评论中的那些人说这可能不是权限问题,因为文件已创建。要测试这是否属实,您可以在配置中添加一个输出到控制台的appender。然后,您可以在调试应用程序时观察输出。如果这也不起作用,您知道问题不是权限问题。
我能给出的最佳建议是将配置文件与工作文件进行比较。确保每个部分在工作配置中都有对应部分,或者您知道为什么它不需要有部分。这是我在log4net上写的一篇文章,其中包含对配置的每个部分的解释,并说明如何编写它们:
http://www.codeproject.com/KB/dotnet/Log4net_Tutorial.aspx
如果所有这些都没有帮助,请在您的问题中发布您的配置文件文字,以便我们查看。
答案 1 :(得分:2)
此问题的一个可能原因可能是记录级别。 检查日志记录级别是否设置为FATAL,如果是这种情况,请尝试替换web.config的这一部分:
<log4net>
.....
<root>
<level value="FATAL" />
<appender-ref ref="RollingFileAppender" />
</root>
.....
</log4net>
用这个:
<log4net>
......
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
....
</log4net>
另外请不要忘记在web.config部分检查一些
的最终发生情况 <filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="test" />
</filter>
款。在这种情况下,即使日志记录级别设置为DEBUG(例如)和您 把代码放在你的代码中,如:
log.Debug("Db quering...");
它总是会返回空白但是如果你写的话:
log.Debug("test: Db quering...");
请尝试注释掉过滤器部分以及此行
<filter type="log4net.Filter.DenyAllFilter" />
这一点最后你应该让它运转!!
希望这有帮助
答案 2 :(得分:0)
如果使用自己的PatternLayout,请参见配置文件中的模式类命名空间:
<layout type="My.PatternClass.Namespace.MyPatternLayout">
...
</layout>