C#编程之log4net应用

C#编程之log4net应用

log4net配置加载使用的几步:
1.工程中新建目录Config,目录内新建文件“log4net.config”,右键->属性->“复制到输出目录” 选 “始终复制”,如下:

image.png | left | 234x180

log4net.config如下设置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="RollingLogFileAppender" type="System.Configuration.IgnoreSectionHandler"/>
  </configSections>

  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--1. 文件路径,如果RollingStyle为Composite或Date,则这里设置为目录,文件名在DatePattern里设置,其他则这里要有文件名。已经扩展支持虚拟目录-->
      <file value="Logs/" />

      <!--2. 创建新文件的方式,可选为Size(按文件大小),Date(按日期),Once(每启动一次创建一个文件),Composite(按日期及文件大小),默认为Composite-->
      <rollingStyle value="Date" />

      <!--3. 当 RollingStyle 为 Composite 或 Date,这里设置文件名格式-->
      <datePattern value="yyyy-MM-dd'.log'" />

      <!--4. true/false,默认为true。为true时,RollingStyler的date值将无效。且为true时,需要在file里指定文件名,所有日志都会记录在这个文件里。-->
      <staticLogFileName value="false" />

      <!--5. 当 rollingStyle 为Composite 或 Size,这里设置最大文件大小(可以KB,MB,GB为单位,默认为字节)-->
      <maximumFileSize value="1KB" />

      <!--6. 默认值为-1。当文件超过MaximumFileSize的大小时,如果要创建新的文件来存储日志,会根据CountDirection的值来重命名文件。  
             大于-1的值时,file里指定的文件名会依次加上.0,.1,.2递增。  
             当等于或小于-1时,创建依赖于MaxSizeRollBackups参数值,创建备份日志数。-->
      <countDirection value="-1" />

      <!--7. 备份日志数目,默认为0。在CountDirection为负数时有效。-->
      <maxSizeRollBackups value="-1" />

      <!--8. true/false,默认为true。当文件存在时,是否在原文件上追加内容。-->
      <appendToFile value="true" />

      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %level %thread %logger - %message %newline" />
      </layout>
    </appender>

    <root>
      <!-- 记录哪个级别以上的日志:  OFF->FATAL->ERROR->WARN->INFO->DEBUG->ALL -->
      <level value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>

</configuration>

2.修改程序AssemblyInfo.cs如下:

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

3.新建LogHelper类,此类并没有什么用处,无非就是帮助让调用的时候少写一行代码。

public class LogHelper
    {
        private LogHelper()
        {

        }

        private static readonly log4net.ILog logger = LogManager.GetLogger(typeof(LogHelper));

        //OFF->FATAL->ERROR->WARN->INFO->DEBUG->ALL
        public static void Fatal(string fatal, Exception ex)
        {
            logger.Fatal(fatal, ex);
        }

        public static void Error(string err, Exception ex)
        {
            logger.Error(err, ex);
        }

        public static void Warn(string err, Exception ex)
        {
            logger.Warn(err, ex);
        }

        public static void Info(string info)
        {
            logger.Info(info);
        }

        public static void Debug(string err, Exception ex)
        {
            logger.Debug(err, ex);
        }
}

4.在Main()中测试:

static void Main(string[] args)
        {
            LogHelper.Info("Info 级别");
            LogHelper.Error("error 级别", new Exception("我是一个exception message"));
        }

其中在log4net.config中的root节点下可以配置日志级别,日志的等级,它们由高到底分别为:
OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL 
高于等级设定值方法都能写入日志, Off所有的写入方法都不写到日志里,ALL则相反。例如当我们设成Info时,logger.Debug就会被忽略而不写入文件,但是FATAL,ERROR,WARN,INFO会被写入,因为他们等级高于INFO。

  <root>
      <!-- 记录哪个级别以上的日志:  OFF->FATAL->ERROR->WARN->INFO->DEBUG->ALL -->
      <level value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>

在具体写日志时,一般可以这样理解日志等级:

FATAL(致命错误):记录系统中出现的能使用系统完全失去功能,服务停止,系统崩溃等使系统无法继续运行下去的错误。例如,数据库无法连接,系统出现死循环。

ERROR(一般错误):记录系统中出现的导致系统不稳定,部分功能出现混乱或部分功能失效一类的错误。例如,数据字段为空,数据操作不可完成,操作出现异常等。

WARN(警告):记录系统中不影响系统继续运行,但不符合系统运行正常条件,有可能引起系统错误的信息。例如,记录内容为空,数据内容不正确等。

INFO(一般信息):记录系统运行中应该让用户知道的基本信息。例如,服务开始运行,功能已经开户等。

DEBUG (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。

Logger实现的ILog接口,ILog定义了5个方法(Debug,Inof,Warn,Error,Fatal)分别对不同的日志等级记录日志。这5个方法还有5个重载。

以上步骤,logger文件只有一个,debug,info,warn等记录都在一个日志文件中,如果每个级别记录到不同的文件当中也是可以的,需要用到LogManager类,它用来管理所有的Logger。它的GetLogger静态方法,可以获得配置文件中相应的Logger:

log4net.ILog log = log4net.LogManager.GetLogger("logger-name");

可以参考网上其他说明。

本文参考:https://blog.csdn.net/binnygoal/article/details/79557746
https://www.cnblogs.com/cnhxz/p/4190228.html

download: Log4Net_Demo.rar

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

苏克贝塔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值