如何使用 log4net 创建 log.txt?

How to create log.txt using 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>

将您的 class 更改为

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);
    }
}
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);
    }

检查您的网络服务器的权限并使用日志文件的完整路径。还对 log4net 使用 debug="true"。这是工作 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>

要使用 log4net,您需要:

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

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