C# 中使用log4net 日志记录

1 首先在nuGet管理器上下载Log4Net包
2 在项目的根目录下新建log4net.config 文件
3 配置log4net,具体详细配置如下:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <!--Add Log4Net Section-->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <!--定义日志的输出媒介,下面定义日志以五种方式输出。也可以下面的按照一种类型或其他类型输出。-->
    <root>
      <!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
      <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
      <level value="ALL"/>
      <!--文件形式记录日志-->
      <appender-ref ref="DEBUG_FILE"/>
      <appender-ref ref="INFO_FILE"/>
      <appender-ref ref="ERROR_FILE"/>
      <!--控制台显示日志-->
      <!--<appender-ref ref="ConsoleAppender"/>-->
    </root>

    <appender name="RemotingAppender" type="log4net.Appender.RemotingAppender" >
      <sink value="tcp://localhost:8085/LoggingSink" />
      <lossy value="false" />
      <bufferSize value="95" />
      <onlyFixPartialEventData value="true" />
    </appender>

    <!-- 此日志文件只记录debug级别的 -->
    <appender  name="DEBUG_FILE" type="log4net.Appender.RollingFileAppender,log4net" >
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG" />
        <param name="LevelMax" value="DEBUG" />
      </filter>

      <!--日志的路径-->
      <file value="log/app-log/" />
      <!--是否覆盖,默认是追加true-->
      <appendToFile value="true"/>
      <rollingStyle value="Composite"/>
      <!--文件名称-->
      <DatePattern value="\debu\g-yyyy-MM-dd.lo\g"></DatePattern>
      <!--文件字符编码-->
      <param name="Encoding" value="utf-8"/>
      <!--设置无限备份=-1 ,最大备份数为100-->
      <param name="MaxSizeRollBackups" value="100"/>
      <!--每个文件的大小-->
      <param name="MaximumFileSize" value="500KB"/>

      <!--名称是否可以更改为false为可以更改-->
      <param name="StaticLogFileName" value="false"/>
      <!--保持文件扩展名一直为.log-->
      <!--<param name="PreserveLogFileNameExtension" value="true"/>-->
      <!--最小锁定模型以允许多个进程可以写入同一个文件-->
      <param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />

      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <!--<param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操作者ID:%property{Operator} 操作类型:%property{Action}%n 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%property{Message}%n 异常:%exception%n 消息:%message%newline%n%n" />  -->
        <conversionPattern value="%date [%thread] %-5level %logger %method(%line) [%property{NDC}] %message %exception %newline"/>
      </layout>

      <!--<layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>-->
    </appender>

    <!-- 此日志文件只记录info级别的 -->
    <appender  name="INFO_FILE" type="log4net.Appender.RollingFileAppender,log4net" >

      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
        <param name="LevelMax" value="INFO" />
      </filter>

      <!--日志的路径-->
      <file value="log/app-log/" />
      <!--是否覆盖,默认是追加true-->
      <appendToFile value="true"/>
      <rollingStyle value="Composite"/>
      <!--文件名称-->
      <DatePattern value="in\fo-yyyy-MM-dd.lo\g"></DatePattern>
      <!--文件字符编码-->
      <param name="Encoding" value="utf-8"/>
      <!--设置无限备份=-1 ,最大备份数为100-->
      <param name="MaxSizeRollBackups" value="100"/>
      <!--每个文件的大小-->
      <param name="MaximumFileSize" value="500KB"/>
      <!--名称是否可以更改为false为可以更改-->
      <param name="StaticLogFileName" value="false"/>
      <!--保持文件扩展名一直为.log-->
      <!--<param name="PreserveLogFileNameExtension" value="true"/>-->
      <!--最小锁定模型以允许多个进程可以写入同一个文件-->
      <param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />

      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <conversionPattern value="%date [%thread] %-5level %logger %method(%line) [%property{NDC}] %message %exception %newline"/>
      </layout>

    </appender>

    <!-- 此日志文件只记录info级别的 -->
    <appender  name="ERROR_FILE" type="log4net.Appender.RollingFileAppender,log4net" >

      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR" />
        <param name="LevelMax" value="ERROR" />
      </filter>



      <!--日志的路径-->
      <file value="log/app-log/" />
      <!--是否覆盖,默认是追加true-->
      <appendToFile value="true"/>
      <rollingStyle value="Composite"/>
      <!--文件名称-->
      <DatePattern value="error-yyyy-MM-dd.lo\g"></DatePattern>
      <!--文件字符编码-->
      <param name="Encoding" value="utf-8"/>
      <!--设置无限备份=-1 ,最大备份数为100-->
      <param name="MaxSizeRollBackups" value="100"/>
      <!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名-->
      <param name="MaximumFileSize" value="500KB"/>
      <!--名称是否可以更改为false为可以更改-->
      <param name="StaticLogFileName" value="false"/>
      <!--最小锁定模型以允许多个进程可以写入同一个文件-->
      <param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />

      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <conversionPattern value="%date %-5level %logger %method(%line) [%property{NDC}] %message %exception %newline"/>
      </layout>
    </appender>

    <!--定义输出到控制台命令行中-->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <!--<filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
      </filter>-->

      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger %method(%line) [%property{NDC}] %message%newline"/>
      </layout>
    </appender>

    <!--<logger name="Log4NetTest.LogTest">
      <level value="DEBUG" />
      <appender-ref  ref="rollingFile" />
      <appender-ref ref="coloredConsoleApp" />
      <appender-ref ref="SystemEvent" />
    </logger>-->
  </log4net>
  </configuration>

4 在AssemblyInfo.cs 类中添加配置文件引用:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

5 测试配置是否成功:

using log4net;
using Survey;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {

        private static readonly ILog logger = LogManager.GetLogger(typeof(Program));
        static void Main(string[] args)
        {
            logger.Info("info");
            logger.Error("error");
            logger.Debug("debug");


        }
    }
}

最后会在xxx/ConsoleApp1\bin\Debug\log/app-log/下生成三个日志文件的话就成功了!

关于log4Net更多详细信息请参考:
log4Net使用及配置注解(整理)
非常完善的Log4net详细说明
log4Net官方例子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我思知我在

原创不易,多多一键三连

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

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

打赏作者

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

抵扣说明:

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

余额充值