log4net使用

首先新建一个项目,然后右键项目,管理nuget包,如果需要图文,看上一文

log4net使用

找到Log4net然后配置文件

log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- This section contains the log4net configuration settings -->
  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Log/" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <staticLogFileName value="false" />
      <datePattern value="yyyy_MM_dd//yyyy_MM_dd_HH_mm_ss_fff&quot;.log&quot;" />
      <maxSizeRollBackups value="10000" />
      <maximumFileSize value="1MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date  [%thread]  %-5level  %message%newline" />
      </layout>
    </appender>

    <!-- Setup the root category, add the appenders and set the default level -->
    <root>
      <level value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>

  </log4net>
</configuration>

然后复制就行了

using log4net;
using log4net.Config;
using System;
using System.IO;

public class Logger
{
  private static ILog logger;
  static Logger()
  {
    if (logger == null)
    {
      var repository = LogManager.CreateRepository("NETCoreRepository");
      //log4net从log4net.config文件中读取配置信息
      XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
      logger = LogManager.GetLogger(repository.Name, "InfoLogger");
    }
  }

  public static void WriteLog(string s,string message,Exception e)
  {
    switch(s)
    {
      case "Info":
        Info(message, e);
        break;
      case "Warn":
        Warn(message, e);
        break;
      case "Error":
        Error(message, e);
        break;
      case "Fatal":
        Fatal(message, e);
        break;
      case "Debug":
        Debug(message, e);
        break;
    }
  }
  /// <summary>
  /// 普通日志
  /// </summary>
  /// <param name="message"></param>
  /// <param name="exception"></param>
  public static void Info(string message, Exception exception = null)
  {
    if (exception == null)
    {
      logger.Info(message);
      Console.WriteLine(message);
    }

    else
    {
      logger.Info(message, exception);
      Console.WriteLine(message,exception.Message);
    }
  }

  /// <summary>
  /// 告警日志
  /// </summary>
  /// <param name="message"></param>
  /// <param name="exception"></param>
  public static void Warn(string message, Exception exception = null)
  {
    if (exception == null)
    {
      logger.Warn(message);
      Console.WriteLine(message);
    }
      
    else
    {
      logger.Warn(message, exception);
      Console.WriteLine(message, exception.Message);
    }  
  }

  /// <summary>
  /// 错误日志
  /// </summary>
  /// <param name="message"></param>
  /// <param name="exception"></param>
  public static void Error(string message, Exception exception = null)
  {
    if (exception == null)
    {
      logger.Error(message);
      Console.WriteLine(message);
    }
    else
    {
      logger.Error(message, exception);
      Console.WriteLine(message, exception.Message);
    }
  }

  /// <summary>
  /// 终结性错误日志
  /// </summary>
  /// <param name="message"></param>
  /// <param name="exception"></param>
  public static void Fatal(string message, Exception exception = null)
  {
    if (exception == null)
    {
      logger.Fatal(message);
      Console.WriteLine(message);
    }
    else
    {
      logger.Fatal(message, exception);
      Console.WriteLine(message, exception.Message);
    }
  }

    /// <summary>
    /// 调试错误日志
    /// </summary>
    /// <param name="message"></param>
    /// <param name="exception"></param>
    public static void Debug(string message, Exception exception = null)
    {
      if (exception == null)
      {
        logger.Debug(message);
        Console.WriteLine(message);
      }
      else
      {
        logger.Debug(message, exception);
        Console.WriteLine(message, exception.Message);
      }
    }
}

这里有个工厂,所以你去主函数直接用就行了

 public static void WriteLog(string s,string message,Exception e)
  {
    switch(s)
    {
      case "Info":
        Info(message, e);
        break;
      case "Warn":
        Warn(message, e);
        break;
      case "Error":
        Error(message, e);
        break;
      case "Fatal":
        Fatal(message, e);
        break;
      case "Debug":
        Debug(message, e);
        break;
    }
  }

Log.writeLog("情况",“错误信息”,异常);

直接就可以用了。具体如何设置config文件,自行百度。