当前位置: 移动技术网 > IT编程>开发语言>.net > .Net中Log4Net的使用

.Net中Log4Net的使用

2018年08月26日  | 移动技术网IT编程  | 我要评论

上品寒士女主角,乐陵教育吧,周易起名软件注册机

2018-08-23

 

.net中log4net的使用

 

一、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 (调试信息):记录系统用于调试的一切信息,内容或者是一些关键数据内容的输出。

 

二、存放单个日志

 

 

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");

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网