Log4net不创建日志文件

Tha*_*Guy 31 log4net

我在配置了log4net的程序上收到错误,但没有创建日志文件.我确定在程序中设置了日志记录,因为其他用户已使用相同的配置文件创建了相同的配置文件(文件路径除外).我确信我对路径有写权限.在程序失败的时候,绝对必须通过日志记录的初始化.

在这个配置文件中是否有任何错误,或者是否有任何人遇到过类似的问题,并且知道我应该在程序中查找我正在尝试获取日志的内容?

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="AutoTag" type="System.Configuration.NameValueSectionHandler"/>
    <section name="WindwardReports" type="System.Configuration.NameValueSectionHandler"/>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"/>
  </configSections>

  <AutoTag>
    <add key="_debug" value="true"/>
  </AutoTag>

  <WindwardReports>
    <add key="line.break" value="internal"/>
  </WindwardReports>

  <appSettings>
    <add key="sql.timeout" value="240"/>
  </appSettings>

  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">

      <param name="File" value="C:\Users\loganm\Documents\Catapult.log"/>

      <param name="AppendToFile" value="true"/>
      <param name="MaxSizeRollBackups" value="2"/>
      <param name="MaximumFileSize" value="100KB"/>
      <param name="RollingStyle" value="Size"/>
      <param name="StaticLogFileName" value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] ac.server %-5p %c - %m%n"/>
      </layout>
    </appender>

    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
  </log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Nar*_*ren 59

在放入日志记录代码之前,请在应用程序中提供以下代码:

log4net.Config.XmlConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)

您可以在Global.asax中定义它:

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup

    // Initialize log4net.
    log4net.Config.XmlConfigurator.Configure();
}
Run Code Online (Sandbox Code Playgroud)

您还可以像Kevin建议的那样添加以下行(或者提及您的配置文件名):

[assembly: log4net.Config.XmlConfigurator]
Run Code Online (Sandbox Code Playgroud)

要么

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!!!


小智 11

确保log4net.config文件,复制到输出目录属性不是"不要复制".

实际上最好的解决方案是添加

<configuration>
   <appSettings>
      <add key="log4net.Internal.Debug" value="true"/>
   </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

跟踪背面的情况.它将帮助您检测问题.

  • 有趣的是,我遇到了类似的问题,即未创建“logs\myfile.log”。我将 log4net.config 文件的 *复制到输出目录* 属性设置为“始终复制”并且它有效。 (2认同)

Kev*_* D. 8

以下是一些可以考虑的事项:

  1. 也许你使用的是不同于同事的log4net DLL版本?尝试从配置部分删除版本和公钥信息,即将其缩短为:

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 尝试更改文件名以使用转义的反斜杠,即"C:\\ Users \\ loganm\...".或者,您可以尝试使用正斜杠:"C:/ Users/loganm/..."

  3. 如果在运行程序之前重新构建程序,请确保您实际上使用的是与同事相同的AssemblyInfo.cs.一个常见的错误是忽略在那里初始化记录器.它应该在底部有这样的东西:

    // Log4Net激活
    [assembly:log4net.Config.XmlConfigurator]


小智 7

我也遇到了这个问题,令人惊讶的是我花了多少时间检查所有内容,最后在 Google 上的查询让我想起了上次使用 Log4Net 时采取的步骤:我必须将其添加到 AssemblyInfo.cs 文件中!疯狂的!我在 C# 控制台应用程序中使用 Log4Net,并在 app.config 文件中设置 Log4Net。

[程序集:log4net.Config.XmlConfigurator(Watch = true)]