如何使用log4net创建log.txt?

时间:2015-07-23 06:49:24

标签: c# asp.net-mvc logging log4net

我能够创建日志但无法为其编写异常字符串... logs.txt仍为空...

这是捕获块:

 catch (Exception ex)
            {
                Logging.LogError(ex.ToString());
                return new DataTable();
            }

Logging.cs:

public class Logging
{
    public readonly ILog log = LogManager.GetLogger(typeof(Logging));
    public static void LogError(string exception)
    {
        log4net.Config.XmlConfigurator.Configure();
    }
}

网络配置:

<log4net>
    <appender name="file" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="Logs\Log_%date{dd-MM-yyyy_HH-mm-ss}.txt"/>
      <appendToFile value="true"/>
      <maxSizeRollBackups value="-1"/>
      <!--infinite-->
      <staticLogFileName value="true"/>
      <rollingStyle value="Once"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %-5level %message%newline"/>
      </layout>
    </appender>
    <root>
      <level value="ALL"/>
      <appender-ref ref="file"/>
    </root>
  </log4net>

3 个答案:

答案 0 :(得分:2)

public static class Logging
{
    private static ILog _logger = null;
    private static log4net.ILog Logger
    {
        get
        {
            if(_logger == null)
            {
                _logger = LogManager.GetLogger(typeof(Logging));
                log4net.Config.XmlConfigurator.Configure();
            }
            return _logger;
        }
    }

    // Better to use Exception object. This gives you more details
    public static void LogError(string msg, Exception ex)
    {
         Logger.Error(msg, ex);
    }

检查Web服务器的权限并使用完整路径记录日志文件。对log4net也使用 debug =&#34; true&#34; 。下面是工作log4net配置的示例,该配置按大小滚动文件。你可以稍后改变它。

  <log4net debug="true">
    <root>
      <level value="ALL" />
      <appender-ref ref="file" />
    </root>
    <appender name="file" type="log4net.Appender.RollingFileAppender, log4net">
      <file value="wwwroot\logs\Log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maximumFileSize value="1MB" />
      <maxSizeRollBackups value="5" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%-5level] (%thread) %logger - %message%newline" />
      </layout>
    </appender>

答案 1 :(得分:0)

将班级更改为

public class Logging
{
    public static readonly ILog log = LogManager.GetLogger(typeof(Logging));
    public static Logging()
    {
        log4net.Config.XmlConfigurator.Configure();
    }
    public static void LogError(string exception)
    {
        log.Error(exception);
    }
}

答案 2 :(得分:0)

要使用log4net,您需要:

  • 配置log4net:查看site上可用的示例,了解如何在配置文件中配置它
  • 初始化log4net:您需要在应用程序启动时执行此操作,例如使用log4net.Config.XmlConfigurator.Configure();
  • 在要从中记录数据的类中实例化记录器: private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));
  • 使用记录器记录:log.Info("Exiting application.");

在您的示例中,您需要在catch块所在的类中声明记录器,在应用程序的开头初始化log4net,并使用该实例记录异常