欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.Net中Log4Net的使用

程序员文章站 2022-03-26 10:25:11
2018-08-23 .Net中Log4Net的使用 一、log4net 分类型记录日志存放多个日志文件 1、在webconfig里添加配置 1.1 在 中添加节点 1.2 添加log4net配置section 2、在Global.asax.cs里添加 log4net ......

2018-08-23

 

.net中log4net的使用

 

一、log4net 分类型记录日志存放多个日志文件

.Net中Log4Net的使用

1、在webconfig里添加配置

  1.1 在<configsections> 中添加节点

1 <configsections>
2 <configsections>
3     <section name="log4net" type="log4net.config.log4netconfigurationsectionhandler,log4net"/>
4   </configsections>
5 </configsections>

  1.2 添加log4net配置section

<log4net>
    <appender name="fatalappender" type="log4net.appender.rollingfileappender">
      <filter type="log4net.filter.levelmatchfilter">
        <leveltomatch value="fatal" />
      </filter>
      <filter type="log4net.filter.denyallfilter" />
      <file value="logs\fatal.log" />
      <appendtofile value="true" />
      <rollingstyle value="date" />
      <datepattern value="yyyymmdd" />
      <layout type="log4net.layout.patternlayout">
        <conversionpattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="errorappender" type="log4net.appender.rollingfileappender">
      <filter type="log4net.filter.levelmatchfilter">
        <leveltomatch value="error" />
      </filter>
      <filter type="log4net.filter.denyallfilter" />
      <file value="logs\err.log" />
      <appendtofile value="true" />
      <rollingstyle value="date" />
      <datepattern value="yyyymmdd" />
      <layout type="log4net.layout.patternlayout">
        <conversionpattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="warnappender" type="log4net.appender.rollingfileappender">
      <filter type="log4net.filter.levelmatchfilter">
        <leveltomatch value="warn" />
      </filter>
      <filter type="log4net.filter.denyallfilter" />
      <file value="logs\warn.log" />
      <appendtofile value="true" />
      <rollingstyle value="date" />
      <datepattern value="yyyymmdd" />
      <layout type="log4net.layout.patternlayout">
        <conversionpattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="infoappender" type="log4net.appender.rollingfileappender">
      <filter type="log4net.filter.levelmatchfilter">
        <leveltomatch value="info" />
      </filter>
      <filter type="log4net.filter.denyallfilter" />
      <file value="logs\info.log" />
      <appendtofile value="true" />
      <rollingstyle value="date" />
      <datepattern value="yyyymmdd" />
      <layout type="log4net.layout.patternlayout">
        <conversionpattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="debugappender" type="log4net.appender.rollingfileappender">
      <filter type="log4net.filter.levelmatchfilter">
        <leveltomatch value="debug" />
      </filter>
      <filter type="log4net.filter.denyallfilter" />
      <file value="logs\debug.log" />  <!--这里可以配置日志存放位置-->
      <appendtofile value="true" />
      <rollingstyle value="date" />
      <datepattern value="yyyymmdd" />
      <layout type="log4net.layout.patternlayout">
        <conversionpattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="perfappender" type="log4net.appender.rollingfileappender">
      <filter type="log4net.filter.levelmatchfilter">
        <leveltomatch value="info" />
      </filter>
      <filter type="log4net.filter.denyallfilter" />
      <file value="logs\perf.log" />
      <appendtofile value="true" />
      <rollingstyle value="date" />
      <datepattern value="yyyymmdd" />
      <layout type="log4net.layout.patternlayout">
        <conversionpattern value="%date %logger - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="all" />
      <appender-ref ref="fatalappender" />
      <appender-ref ref="errorappender" />
      <appender-ref ref="warnappender" />
      <appender-ref ref="infoappender" />
      <appender-ref ref="debugappender" />
    </root>
  </log4net>

2、在global.asax.cs里添加

 log4net.config.xmlconfigurator.configure();

3、添加 helper类

using log4net;
using system;
using system.collections.generic;
using system.linq;
using system.web;

namespace testlog4net
{
    public class log4nethelper
    {
        public static void fatal(type type, object message, exception exception = null)
        {
            ilog log = logmanager.getlogger(type);
            if (exception == null)
                log.fatal(message);
            else
                log.fatal(message, exception);
        }

        public static void error(type type, object message, exception exception = null)
        {
            ilog log = logmanager.getlogger(type);
            if (exception == null)
                log.error(message);
            else
                log.error(message, exception);
        }

        public static void warn(type type, object message, exception exception = null)
        {
            ilog log = logmanager.getlogger(type);
            if (exception == null)
                log.warn(message);
            else
                log.warn(message, exception);
        }

        public static void info(type type, object message, exception exception = null)
        {
            ilog log = logmanager.getlogger(type);
            if (exception == null)
                log.info(message);
            else
                log.info(message, exception);
        }

        public static void debug(type type, object message, exception exception = null)
        {
            ilog log = logmanager.getlogger(type);
            if (exception == null)
                log.debug(message);
            else
                log.debug(message, exception);
        }

    }
}

4、代码里使用

   ilog log = log4net.logmanager.getlogger(system.reflection.methodbase.getcurrentmethod().declaringtype);//获取一个日志记录器
            log4nethelper.fatal(this.gettype(), "fatal");                           //致命错误
            log4nethelper.error(this.gettype(), "error", new exception("error"));   //错误
            log4nethelper.warn(this.gettype(), "warn");                             //禁告
            log4nethelper.info(this.gettype(), "info");                             //信息
            log4nethelper.debug(this.gettype(), "debug");                           //调试

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

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

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

info(一般信息):记录系统运行中应该让用户知道的基本信息。

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

 

二、存放单个日志

.Net中Log4Net的使用

.Net中Log4Net的使用

 

 

1、在以上基础上 配置修改

  <log4net>
    <!-- off, fatal, error, warn, info, debug, all -->
    <!-- set root logger level to error and its appenders -->
    <root>
      <level value="all" />
      <appender-ref ref="sysappender" />
    </root>
    <!-- print only messages of level debug or above in the packages -->
    <logger name="weblogger">
      <level value="log" />
    </logger>
    <appender name="sysappender" type="log4net.appender.rollingfileappender,log4net">
      <!--<param name="file" value="app_data/" />-->
      <file value="logs\log" />  <!--日志文件位置和文件名-->
      <param name="appendtofile" value="true" />
      <param name="rollingstyle" value="date" />
      <!--<param name="datepattern" value="&quot;logs_&quot;yyyymmdd&quot;.txt&quot;" />-->
      <param name="datepattern" value="yyyymmdd&quot;.txt&quot;" /><!--在文件名后面加内容 比如 log名变为log20180808-->
      <param name="staticlogfilename" value="false" />
      <layout type="log4net.layout.patternlayout,log4net">
        <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="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>
  </log4net>

2、代码使用

ilog log = log4net.logmanager.getlogger(system.reflection.methodbase.getcurrentmethod().declaringtype);//获取一个日志记录器            
log.fatal("info");
log.error("error");
log.warn("warn");
log.info("info");
log.debug("debug");