Log4Net 在项目中的使用

在项目中,经常需要记录日志,复杂一点想事物日志,操作日志,错误日志。在实际项目中,我能想到的目前有几点:

  • 产量日志——output log,诸如每台机器在生产中,每日的产量或者累计产量情况
    • 错误日志——error log,在实际项目中,诸如抛料等错误的情况
    • 操作日志——operation log,记录在项目运行后,登陆账号,连接客户端,关键参数被修改的情况

这里由于需要记录多种日志,并且输出到多个文件中,采用的多logger配置响应的appender。
也可以采用多个appender配置不同的文件输出,通过Filter过滤

操作步骤:
1 加入dll 引用【log4net.dll

2 在项目中添加一个【Application Configration File】,命名为【log4net.config】;或者直接拷贝配置好的模板

3 创建使用
创建一个产量日志,利用logger名字获取lLog

string path = Application.StartupPath;
var logCfg = new FileInfo(path.Substring(0, path.Length-9)+ "\\log4net.config");
XmlConfigurator.Configure(logCfg);
ILog output = LogManager.GetLogger("output Logger");

详解配置:
下面是大概的配置。一个【logger】添加多个【appender】,【appender】配置日志输出路径,格式,文件名等等信息。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <section name="log4net"
             type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>

   <log4net>


    <root>
    ...
    </root>

    <logger name="debug Logger">
      <level value="ALL" />
      <appender-ref ref="debug"/>
    </logger>

    <appender name="debug" type="log4net.Appender.RollingFileAppender">
...
    </appender>

  </log4net>
</configuration>

详解【appender】

    <appender name="debug" type="log4net.Appender.RollingFileAppender, log4net">
      <!--日志文件名路径和开头-->
      <file value="..\bin\debug_"/>

      <!--使用动态的名字-->
      <staticLogFileName value="false"/>

      <!--按日期更换名字-->
      <RollingStyle value="Date"/>

      <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
      <datePattern value="yyyy-MM-dd'.log'"/>

      <!--多线程时采用最小锁定,防止多线程时不能写Log,即线程非安全-->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>

      <!--是否追加到文件,默认为true,通常无需设置-->
      <appendToFile value="true"/>

      <!--日志格式-->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%t]%-5p %c - %m%n"/>
      </layout>
   </appender>

详解【logger】
<logger name="debug Logger">
      <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
      <level value="ALL" />
      <!--将日志以回滚文件的形式写到文件中-->
      <appender-ref ref="debug"/>
</logger>

关于日志级别
控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF
比如:定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录

ConversionPattern 解释
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):換行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称
%L:输出语句所在的行号
%F:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,科技网,则用空格填充

另一种方法
在【root】节点下配置多个【appender-ref】




然后配置响应的【appender】,这里不同的【appender】,配置文件名,文件路径,文件大小,文件产生方式,文件添加方式等等信息不同


为了使不同的日志信息输出到不同的文件中,我们使用过滤器【 filter】,过滤某种特定日志,输出到绑定到该【appender】中




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值