Log4net无法写入,只能创建空文件,但不能写入实际日志

时间:2011-06-20 16:36:23

标签: log4net log4net-configuration

我无法写入日志任何信息,错误,使用log4net调试,我尝试了所有给网络服务的permsission,每个人到目录asp.net临时文件夹,日志文件夹,甚至c:\,

它只是创建一个空文件。但不要写日志

可能是什么问题

THX 拉吉

3 个答案:

答案 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>