Log4Net没有创建日志文件

时间:2015-01-22 02:41:33

标签: log4net log4net-configuration

我正在使用log4net来记录我的应用程序中的错误。但是日志文件没有被创建。据我所知,代码很好。

Web.config代码

 <configSections>
    <!-- For more information on Entity Framework configuration, visit  http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
        <!-- Pattern to output the caller's file name and line number -->
        <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
    </layout>
</appender>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="C:\Demo\example.log" />
    <appendToFile value="true" />
    <maximumFileSize value="100KB" />
    <maxSizeRollBackups value="2" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level %thread %logger - %message%newline" />
    </layout>
</appender>
<root>
    <level value="DEBUG" />
    <appender-ref ref="Console" />
    <appender-ref ref="RollingFile" />
</root>
</log4net>

在AssemblyInfo.cs文件中,我添加了以下代码

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

在我想跟踪错误的类中,我添加了以下代码

  private static readonly ILog logger = LogManager.GetLogger(typeof(ProviderRepository));

我在catch块中使用logger。

 logger.Error(Ex.Message);

但我没看到日志文件。我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

您应检查您的apppool用户是否有权访问C:\ Demo \,然后您可以启用log4net内部调试,它将告诉您配置或文件访问是否有任何问题:

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

...

    <system.diagnostics>
        <trace autoflush="true">
            <listeners>
                <add 
                    name="textWriterTraceListener" 
                    type="System.Diagnostics.TextWriterTraceListener" 
                    initializeData="C:\tmp\log4net.txt" />
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>

Log4net FAQ

答案 1 :(得分:0)

非常感谢你们提出的所有建议。我能够解决这个问题。我在Global.asax文件中编写了以下代码行

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

我之前在Assembly.info.cs文件中写了它。