Log4net不创建日志文件

时间:2014-01-16 00:53:15

标签: 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>

6 个答案:

答案 0 :(得分:52)

在输入日志代码之前,在应用程序中提供以下代码:

log4net.Config.XmlConfigurator.Configure();

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

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

    // Initialize log4net.
    log4net.Config.XmlConfigurator.Configure();
}

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

[assembly: log4net.Config.XmlConfigurator]

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]

希望它有所帮助!!!

答案 1 :(得分:10)

确保log4net.config文件,Copy to Output Directory属性不是&#34;不要复制&#34;。

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

<configuration>
   <appSettings>
      <add key="log4net.Internal.Debug" value="true"/>
   </appSettings>
</configuration>

跟踪背面的情况。它可以帮助您发现问题。

答案 2 :(得分:6)

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

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

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
    
  2. 尝试更改文件名以使用转义后的反斜杠,即&#34; C:\\ Users \\ loganm \ ...&#34;。或者,您可以尝试使用正斜杠:&#34; C:/ Users / loganm /..."

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

asp.net用户中的

访问被拒绝可能是一个问题。例如:从测试项目运行会记录日志,但从Web应用程序运行不会

只需将其添加到配置

<appSettings>
    <add key="log4net.Internal.Debug" value="true"/>

调试应用程序并查看标准输出。这将输出log4net调试信息(一旦发现问题就将其删除)

答案 5 :(得分:-2)

我发现了问题,遗憾的是,程序中实际上并没有设置日志记录,而且我收到的信息不正确。