C#使用Log4Net

Log4Net简介

之前文章提到过,Log4Net是.Net常用中间件之一。我们可以控制日志信息的输出目的地(数据库、控制台、文本文档、文件)。Log4net中定义了多种日志信息输出模式,解决了在程序发布到正式环境之后出现了问题而无法调试的尴尬局面。

对于日志的输出我们不需要人为的去干涉,它可以根据需要将日志输出到控制台,文本文件,windows 日志事件查看器中,包括数据库,邮件等等位置,以便我们快速跟踪程序bug。

Log4Net简单使用

  1. 通过VS程序包管理器安装Log4Net:Install-Package log4net
  2. 在项目配置文件Global.asax.cs中注册Log4Net:
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~/Web.config")));
  1. Log4Net 日志级别
    Log4net 分为如下几个级别:FATAL (毁灭级别)、ERROR (错误级别)、WARN ( 警告级别)、INFO (消息级别)、DEBUG (调试级别)

这几种日志级别高低:FATAL> ERROR> WARN > INFO > DEBUG。

PS:1.只有日志输出级别大于或等于配置的级别才能输出日志信息。
  2.还有两种特殊的配置级别: ALL - 允许所有的日志级别输出,OFF - 拒绝所有的日志级别输出。
  
4. 配置web.config(在configuration节点下配置)

<log4net>   
    <root><!--root 就相当于默认的日志对象配置,而logger是指定特定的日志配置。他们可以共存-->
      <level value="ALL" /><!--允许所有的日志级别输出-->
      <appender-ref ref="SysAppender" />
    </root>   
    <logger name="WebLogger"><!--日志类的名字-->
      <level value="DEBUG" /><!--定义记录的日志级别:调试级别-->
    </logger>
    <!--错误日志附加介质-->
    <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <param name="File" value="Log/" /><!--日志输出到项目相对目录下-->
      <param name="AppendToFile" value="true" /><!--输出的日志不会覆盖以前的信息-->
      <param name="RollingStyle" value="Date" /><!--文件创建的方式,这里是以Date方式创建-->
      <param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" /><!--日志文件名-->
      <param name="StaticLogFileName" value="false" /><!--是否使用静态文件名-->
      <!--错误日志布局-->
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%m" /><!--%m: 直接输出-->
        <!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />-->
      </layout>
    </appender>
    <!--信息日志附加介质-->
    <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%m" /><!--输出到控制台-->
        <!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />-->
      </layout>
    </appender>
  </log4net>

5.日志输出样式(可以任意组合输出日志格式内容)

%m(message):输出的日志消息,如ILog.Debug()输出的一条消息 
%n(new line):换行 
%d(datetime):输出当前语句运行的时刻 
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 
%t(thread id):当前语句所在的线程ID 
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 
%c(class):当前日志对象的名称,例如: 
%f(file):输出语句所在的文件名。 
%l(line):输出语句所在的行号。 
%数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。

6.定义Log4Net帮助类LogHelper(由于博主二次处理过了,所以就不放代码了,可以自行百度或者自己封装)
7.代码中记录错误(MVC可以重写OnException方法去捕获异常)
控制台实例Demo:

protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                string a = "FF";
                int b = Convert.ToInt32(a);
            }
            catch (Exception ex){
                LogHelper.WriteLog(ex.Message.ToString(), ex);
            }
        }

后续会分享博主项目源代码

你可能感兴趣的:(C#)