如何配置log4net,让日志分类记录到不同的日志文件中

如何配置log4net,让日志分类记录到不同的日志文件中

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
  </startup>
  <log4net>
    <root>
      <priority value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
      <appender-ref ref="RollingLogWarnFileAppender"/>
      <appender-ref ref="RollingLogFatalFileAppender"/>
      <appender-ref ref="RollingLogInfoFileAppender"/>
      <!--<appender-ref ref="ColoredConsoleAppender" />-->
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\Error\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy_MM_dd'.log'" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%r %date [%thread] %-5level- %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="ERROR" />
      </filter>
    </appender>
    <appender name="RollingLogWarnFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\Warn\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy_MM_dd'.log'" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%r %date [%thread] %-5level- %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="WARN" />
        <levelMax value="WARN" />
      </filter>      
    </appender>
    <appender name="RollingLogFatalFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\Fatal\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy_MM_dd'.log'" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%r %date [%thread] %-5level- %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="FATAL" />
        <levelMax value="FATAL" />
      </filter>
    </appender>
    <appender name="RollingLogInfoFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\Info\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy_MM_dd'.log'" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%r %date [%thread] %-5level- %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="INFO" />
      </filter>
    </appender>    
    <!--<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <mapping>
        <level value="FATAL" />
        <foreColor value="Red, HighIntensity" />
      </mapping>
      <mapping>
        <level value="ERROR" />
        <foreColor value="Red" />
      </mapping>
      <mapping>
        <level value="WARN" />
        <foreColor value="Yellow" />
      </mapping>
      <mapping>
        <level value="INFO" />
        <foreColor value="White" />
      </mapping>
      <mapping>
        <level value="DEBUG" />
        <foreColor value="Green" />
      </mapping>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%r %date [%thread] %-5level- %message%newline" />
      </layout>
    </appender>-->
  </log4net>

</configuration>

使用代码

private static readonly ILog logInfo = LogManager.GetLogger("loginfo");
        static LoggingHelper()
        {
            IntiLocalLog();
        }

        /// <summary>
        /// 记录严重错误日志
        /// </summary>
        /// <param name="message">消息内容</param>
        /// <param name="ex">异常信息</param>
        /// <param name="isWriteDebug">是否在output输出</param>
        public static void Fatal(string message, Exception ex = null, bool isWriteDebug = true)
        {
            Task.Factory.StartNew(() =>
            {
                logInfo.Fatal(message, ex);
            }).ContinueWith((t) =>
            {
                LoggingHelper.Error("日志严重错误信息记录错误" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }


        /// <summary>
        /// 记录错误日志
        /// </summary>
        /// <param name="message">消息内容</param>
        /// <param name="ex">异常信息</param>
        /// <param name="isWriteDebug">是否在output输出</param>
        public static void Error(string message, Exception ex = null, bool isWriteDebug = true)
        {
            Task.Factory.StartNew(() =>
            {
                logInfo.Error(message, ex);
            }).ContinueWith((t) =>
            {
                LoggingHelper.Error("日志异常信息记录错误" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }


        /// <summary>
        /// 记录警告日志
        /// </summary>
        /// <param name="message">消息内容</param>
        /// <param name="ex">异常信息</param>
        /// <param name="isWriteDebug">是否在output输出</param>
        public static void Warn(string message, Exception ex = null, bool isWriteDebug = true)
        {
            Task.Factory.StartNew(() =>
            {
                 logInfo.Warn(message, ex);
            }).ContinueWith((t) =>
            {
                LoggingHelper.Error("日志警告信息记录错误" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }

        /// <summary>
        /// 记录信息日志
        /// </summary>
        /// <param name="message">消息内容</param>
        /// <param name="ex">异常信息</param>
        /// <param name="isWriteDebug">是否在output输出</param>
        public static void Info(string message, Exception ex = null, bool isWriteDebug = true)
        {
            Task.Factory.StartNew(() =>
            {
                logInfo.Info(message, ex);
            }).ContinueWith((t) =>
            {
                LoggingHelper.Error("日志信息记录错误" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }

        /// <summary>
        /// 记录调试日志
        /// </summary>
        /// <param name="message">消息内容</param>
        public static void Debug(string message)
        {
            Task.Factory.StartNew(() =>
            {
                logInfo.Debug(message);
            }).ContinueWith((t) =>
            {
                LoggingHelper.Error("日志调试信息记录错误" + t.Exception.InnerException.GetType().Name);
            },
                    TaskContinuationOptions.OnlyOnFaulted);
        }

        #region 私有方法

        private static void IntiLocalLog()
        {
            log4net.Config.XmlConfigurator.Configure();
        }

        #endregion
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Log4Net框架进行日志记录需要以下步骤: 1. 安装Log4Net NuGet包。在Visual Studio打开项目解决方案,右键单击项目,选择“管理NuGet程序包”,搜索“log4net”并安装。 2. 在应用程序的配置文件(例如app.config或web.config)添加Log4Net配置。以下是一个简单的配置示例: ```xml <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logs\mylog.txt"/> <appendToFile value="true"/> <rollingStyle value="Size"/> <maxSizeRollBackups value="5"/> <maximumFileSize value="10MB"/> <staticLogFileName value="true"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/> </layout> </appender> <root> <level value="ALL"/> <appender-ref ref="RollingFileAppender"/> </root> </log4net> </configuration> ``` 在上面的示例,我们定义了一个名为“RollingFileAppender”的附加程序,它将日志记录到“logs\mylog.txt”文件文件大小最大为10MB,最多保留5个备份文件。我们还定义了一个模式布局,其包括日期、线程、级别、日志记录器和消息。 3. 在应用程序使用Log4Net进行日志记录。在应用程序的任何位置,您都可以使用以下代码初始化Log4Net: ```csharp using log4net.Config; // ... XmlConfigurator.Configure(); ``` 然后,您可以使用以下方法记录日志: ```csharp using log4net; // ... private static readonly ILog log = LogManager.GetLogger(typeof(MyClass)); // ... log.Debug("This is a debug message"); log.Info("This is an info message"); log.Warn("This is a warning message"); log.Error("This is an error message"); log.Fatal("This is a fatal message"); ``` 在上面的示例,我们首先使用`LogManager.GetLogger`方法获取一个日志记录器。在这种情况下,我们使用了`MyClass`类的类型对象作为记录器名称。然后,我们使用`ILog`接口的方法记录不同级别的日志消息。 4. 运行应用程序并查看日志文件。当应用程序运行时,所有使用Log4Net记录日志消息都将写入指定的文件。您可以使用任何文本编辑器打开该文件并查看日志消息。 希望这个简单的指南可以帮助您开始使用Log4Net框架记录日志

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖的诗人Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值