【问题标题】:Log4net is not logging anythingLog4net 没有记录任何内容
【发布时间】:2018-09-03 20:55:34
【问题描述】:

我无法让 log4net 在我的 ASP.NET 项目上工作。我的 web.config 如下所示:

<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
 </configSections>
<log4net debug="true">
<appender name="console" type="log4net.Appender.ConsoleAppender">
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %level %logger - %message%newline" />
  </layout>
</appender>
<appender name="file" type="log4net.Appender.RollingFileAppender">
  <file value="CardGame.log" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="5" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
  </layout>
</appender>
<root>
  <level value="ALL"/>
  <appender-ref ref="console" />
  <appender-ref ref="file" />
</root>
</log4net>

我的 LogHelper 类看起来像这样:

public class LogHelper
{
    private static LogHelper _instance = new LogHelper();
    private static volatile object _lock = new object();
    public ILog Logger;

    public static LogHelper Instance
    {
        get
        {
            lock (_lock)
            {
                if (_instance == null)
                {
                    _instance = new LogHelper();
                }
            }
            return _instance;
        }
    }

    private LogHelper()
    {
        Logger = LogManager.GetLogger(typeof(LogHelper));
        Logger.Debug("Debug message");
        Logger.Warn("Warn message");
        Logger.Error("Error message");
        Logger.Fatal("Fatal message");
    }
}

我也加了一行

log4net.Config.XmlConfigurator.Configure();

到 global.asax.cs 中的 Application_Start

但是,构造函数中的任何日志都不起作用,而且我对它为什么不起作用的想法已经不多了。

【问题讨论】:

    标签: asp.net logging log4net


    【解决方案1】:

    确保运行应用程序的用户对目标文件夹具有写入权限。

    我总是通过添加everyone 并重新启动池来测试这种情况。如果它工作你知道这是一个权限问题,否则检查代码/配置。

    【讨论】:

    • 好像是这样。我正在使用默认的“ApplicationPoolIdentity”运行应用程序池。将其切换到我的 Windows 用户可以解决问题。
    • 您应该反过来,将该用户添加到文件夹中。我认为这些用户的前缀是`NT`
    【解决方案2】:

    您使用的是哪个版本?这是我的 web.config 中的设置

        <log4net>
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
            <param name="File" value="Log.txt" />
            <param name="AppendToFile" value="true" />
            <rollingStyle value="Size" />
            <maxSizeRollBackups value="30" />
            <maximumFileSize value="15MB" />
            <staticLogFileName value="true" />
            <layout type="log4net.Layout.PatternLayout">
                <!--<conversionPattern value="%-5p %d %5rms [%thread] %-22.22c{1} %-18.18M - %m%n" />-->
                <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
            </layout>
        </appender>
        <root>
            <!-- Options are "ALL", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" and "OFF". -->
            <level value="ALL" />
            <appender-ref ref="RollingFileAppender" />
        </root>
    </log4net>
    

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 2020-11-17
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多