我无法使用 log4net 写入日志任何信息、错误、调试,我尝试了一切为网络服务提供权限的方法,每个人都可以访问目录 asp.net 临时文件夹、日志文件夹,甚至 c:\,
它只是创建一个空文件。但不写日志
可能是什么问题
谢谢拉吉
我无法使用 log4net 写入日志任何信息、错误、调试,我尝试了一切为网络服务提供权限的方法,每个人都可以访问目录 asp.net 临时文件夹、日志文件夹,甚至 c:\,
它只是创建一个空文件。但不写日志
可能是什么问题
谢谢拉吉
我的猜测是在您的配置文件中,您没有指定布局模式。通常,您的 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
如果所有这些都没有帮助,请在您的问题中发布您的配置文件文本,以便我们查看它。
此问题的一个可能原因可能是Logging Level。检查日志记录级别是否设置为 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" />
最后你应该得到它的工作!
希望这可以帮助
如果您使用自己的 PatternLayout,请参阅配置文件中的模式类命名空间:
<layout type="My.PatternClass.Namespace.MyPatternLayout">
...
</layout>