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

Log4net无法写入,只能创建空文件,但不能写入实际日志,log4net,log4net-configuration,Log4net,Log4net Configuration,我无法写入日志任何信息,错误,使用log4net进行调试,我尝试了所有方法将权限分配给网络服务,每个人都分配给目录asp.net临时文件夹,日志文件夹,甚至c:\ 它只是创建一个空文件。但不要写日志 可能是什么问题 Thx Raj我猜在配置文件中,您没有指定布局模式。通常情况下,您的appender中有如下内容: <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%th

我无法写入日志任何信息,错误,使用log4net进行调试,我尝试了所有方法将权限分配给网络服务,每个人都分配给目录asp.net临时文件夹,日志文件夹,甚至c:\

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

可能是什么问题

Thx
Raj

我猜在配置文件中,您没有指定布局模式。通常情况下,您的appender中有如下内容:

<layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>

它指定要写入日志的内容。如果你没有,我怀疑它会写什么

我同意评论中的观点,他们说这可能不是权限问题,因为文件是创建的。为了测试这是否正确,您可以向配置中添加一个输出到控制台的appender。然后,您可以在调试应用程序时查看输出。如果这也不起作用,那么您知道问题不是权限问题

我能给出的最好建议是将您的配置文件与工作文件进行比较。确保每个部分在工作配置中都有对应的部分,或者您知道为什么它不需要有对应的部分。下面是我在log4net上写的一篇文章,其中包括对配置的每个部分的解释,并展示了如何编写它们:


如果所有这些都没有帮助,请在您的问题中发布您的配置文件文本,以便我们查看。

此问题的一个可能原因可能是日志记录级别。 检查日志记录级别是否设置为致命,如果是,请尝试替换web.config的此部分:

 <log4net>
         .....
         <root>
              <level value="FATAL" /> 
              <appender-ref ref="RollingFileAppender" />
            </root>
         .....
    </log4net>
它将始终返回空白,但如果您编写以下示例:

log.Debug("test: Db quering...");
因此,尝试注释掉过滤器部分和这一行

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

a这一点你终于应该让它工作了


如果您使用自己的PatternLayout,请参阅配置文件或pattern类名称空间中的:

<layout type="My.PatternClass.Namespace.MyPatternLayout">
    ...
</layout>

...

如果log4net可以创建文件,则可能不是权限问题。您确定已为正在测试的日志级别启用日志记录吗?请向我们展示您的log4net配置。我同意您的看法。如果您给我们您的log4net配置,我们可以告诉您它不是什么,并缩小我们的建议池。
log.Debug("test: Db quering...");
  <filter type="log4net.Filter.DenyAllFilter" />
<layout type="My.PatternClass.Namespace.MyPatternLayout">
    ...
</layout>