2011-06-20 161 views
7

我无法写入日志任何信息,错误,使用log4net调试,我尝试了一切给网络服务permsission,大家到目录asp.net临时文件夹,日志文件夹,甚至c:\,Log4net无法写入,只能创建空文件,但不能写入实际日志

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

可能是什么问题

THX 拉吉

+4

如果log4net可以创建文件,它可能不是权限问题。您确定您正在测试的日志级别启用了日志记录功能吗?请向我们展示您拥有的log4net配置。 – driis

+0

我同意driis在这里。如果你给我们你的log4net配置,我们可以告诉你它不是什么,并缩小我们的建议池。 –

回答

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

如果这一切没有帮助,请发表您的配置文件中的文本你的问题,所以我们可以看看它。

2

此问题的一个可能的原因可能是日志记录级别。 检查日志记录级别设置为致命的,如果是这样的情况下,尝试更换web.config中的这一部分:

<log4net> 
     ..... 
     <root> 
       <level value="FATAL" /> 
       <appender-ref ref="RollingFileAppender" /> 
      </root> 
     ..... 
    </log4net> 

与此:

<log4net> 
    ...... 
    <root> 
     <level value="DEBUG" /> 
      <appender-ref ref="RollingFileAppender" /> 
     </root> 
    .... 
</log4net> 

Furthemore不要忘记检查web.config部分最终发生的一些

<filter type="log4net.Filter.StringMatchFilter"> 
    <stringToMatch value="test" /> 
    </filter> 

小节。在把你的代码,即使日志记录级别设置为DEBUG这种情况下(例如),你 somethig喜欢:

log.Debug("Db quering..."); 

它总是返回空,但如果你写例如:

log.Debug("test: Db quering..."); 
因此

尝试注释掉滤光片部分,也这条线

<filter type="log4net.Filter.DenyAllFilter" /> 

一这点最后你应该得到它的工作!

希望这有助于