.net core Log4net配置和使用

1.首先安装 Log4net

Install-Package log4net -Version 2.0.8

2.项目目录中新增Log4net配置文件log4net.config

file:日志文件的默认位置

dataPatten:日志文件名称

下面的配置文件配置的路径是:项目根目录\logs\日志类型\yyyyMMdd\yyyyMMdd_hh.log

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

  <log4net>
    <!-- Debug 将日志以回滚文件的形式写到文件中 -->
    <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender">
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <file value="logs\\Debug\\" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <param name="MaxFileSize" value="10240"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <!--<datePattern value="yyyyMMdd/yyyy-MM-dd_HH_mm_ss&quot;.log&quot;" />-->
      <datePattern value="yyyyMMdd/yyyy-MM-dd_HH&quot;.log&quot;" />
      <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <!--<conversionPattern value="【日志时间】:%date【线程ID】:%thread%newline【日志级别】:%5level%newline%message%newline********************************************************************%newline" />-->
        <conversionPattern value="【日志时间】:%date%newline【日志级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="Debug" />
        <param name="LevelMax" value="Debug" />
      </filter>
    </appender>

    <!-- Info 将日志以回滚文件的形式写到文件中 -->
    <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender">
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <file value="logs\\Info\\" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <param name="MaxFileSize" value="10240"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyyMMdd/yyyy-MM-dd_HH&quot;.log&quot;" />
      <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="【日志时间】:%date%newline【日志级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="Info" />
        <param name="LevelMax" value="Info" />
      </filter>
    </appender>

    <!-- Warn 将日志以回滚文件的形式写到文件中 -->
    <appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender">
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <file value="logs\\Warn\\" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <param name="MaxFileSize" value="10240"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyyMMdd/yyyy-MM-dd_HH&quot;.log&quot;" />
      <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="【日志时间】:%date%newline【日志级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="Warn" />
        <param name="LevelMax" value="Warn" />
      </filter>
    </appender>

    <!-- Error 将日志以回滚文件的形式写到文件中 -->
    <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender">
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <file value="logs\\Error\\" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <param name="MaxFileSize" value="10240"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyyMMdd/yyyy-MM-dd_HH&quot;.log&quot;" />
      <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="【日志时间】:%date%newline【日志级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="Error" />
        <param name="LevelMax" value="Error" />
      </filter>
    </appender>

    <!-- Fatal 将日志以回滚文件的形式写到文件中 -->
    <appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender">
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <file value="logs\\Fatal\\" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <param name="MaxFileSize" value="10240"/>
      <param name="MaxSizeRollBackups" value="100"/>
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyyMMdd/yyyy-MM-dd_HH&quot;.log&quot;" />
      <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="【日志时间】:%date%newline【日志级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="Fatal" />
        <param name="LevelMax" value="Fatal" />
      </filter>
    </appender>

    <logger name="RollingLogFileAppender">
      <level value="ALL" />
      <appender-ref ref="RollingFileDebug" />
      <appender-ref ref="RollingFileInfo" />
      <appender-ref ref="RollingFileWarn" />
      <appender-ref ref="RollingFileError" />
      <appender-ref ref="RollingFileFatal" />
    </logger>

    <!--<root> 
    控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF   
    比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录  
     如果没有定义LEVEL的值,则缺省为DEBUG  
      <level value="ALL" /> 
       按日期切分日志文件,并将日期作为日志文件的名字  
      <appender-ref ref="RollingFileAppenderNameByDate" />
    </root>-->
  </log4net>
</configuration>

3.日志帮助类

public class LogHelper
    {
        private static ILoggerRepository repository { get; set; }
        private static ILog _log;
        private static ILog log
        {
            get
            {
                if (_log == null)
                {
                    Configure();
                }
                return _log;
            }
        }

        public static void Configure(string repositoryName = "NETCoreRepository", string configFile = "log4net.config")
        {
            repository = LogManager.CreateRepository(repositoryName);
            XmlConfigurator.Configure(repository, new FileInfo(configFile));
            _log = LogManager.GetLogger(repositoryName, "RollingLogFileAppender");
        }
        public static void Info(string msg)
        {
            log.Info(msg);
        }

        public static void Warn(string msg)
        {
            log.Warn(msg);
        }

        public static void Error(string msg, Exception exception = null)
        {
            log.Error(msg, exception);
        }

        public static void Debug(string msg)
        {
            log.Debug(msg);
        }

        public static void Fatal(string msg)
        {
            log.Fatal(msg);
        }
    }

4.使用

LogHelper.Info("测试日志")

猜你喜欢

转载自blog.csdn.net/wu_zongwen/article/details/108147898