Log4net安装配置

1.新建log4net配置文件,名字随便起,位置随便放(这里我是/Configs/testlog4.config)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

  <log4net>
    <logger name="MLogError">
      <level value="ERROR" />
      <appender-ref ref="MErrorAppender" />
    </logger>
    <logger name="MLogInfo">
      <level value="INFO" />
      <appender-ref ref="MInfoAppender" />
    </logger>
    <appender name="MErrorAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Logs\Error\error.txt" />
      <param name="DatePattern" value="yyyyMMdd"/>
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="MaximumFileSize" value="1MB" />
      <param name="RollingStyle" value="Size" />
      <param name="StaticLogFileName" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-5p %d [%c] %m%n" />
      </layout>
    </appender>
    <appender name="MInfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Logs\Info\" />        <!--多少条写入-->     <bufferSize VALUE="0" />
      <!-- True/false,默认为true。当文件存在时,是否在原文件上追加内容。 -->
      <param name="AppendToFile" value="true" />
      <!-- 备份日志数目,默认为0。在CountDirection为负数时有效。 -->
      <param name="MaxSizeRollBackups" value="100" />
      <!-- 当RollingStyle为Composite或Size,这里设置最大文件大小(能够KB,MB,GB为单位,默认为字节) -->
      <param name="MaxFileSize" value="10240" />
      <!--StaticLogFileName若是为true,则当前日志文件(相对于历史日志文件而言)的文件名只取File参数。若是为false,则文件名取File+DatePattern。 -->
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM\\yyyyMMdd&quot;.log&quot;" />
      <!-- 建立新文件的方式,可选为Size(按文件大小),Date(按日期),Once(每启动一次建立一个文件),Composite(按日期及文件大小),默认为Composite -->
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n异常时间:%d %n异常级别:%-5p %n异常内容:%m%n" />
      </layout>
    </appender>


  </log4net>

</configuration>

 

2.新建TestHelper类封装下

 public class TestHelper { public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("MLogInfo"); public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("MLogError"); /// <summary> /// 普通的文件记录日志 /// </summary> /// <param name="info"></param> public static void WriteLog(string info) { if (loginfo.IsInfoEnabled) { loginfo.Info(info); } } /// <summary> /// 错误日志 /// </summary> /// <param name="info"></param> /// <param name="se"></param> public static void WriteLog(string info, Exception se) { if (logerror.IsErrorEnabled) { logerror.Error(info, se); } } }

 

3.配置AssemblyInfo.cs文件

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

 

4.设置testlog4.config文件属性(设为始终复制,否则发布时候拷不过去)

 

 5.调用

TestHelper.WriteLog("adasdasdasdas");

 

 6.日志展现

 

 

 

 

7.配置说明

%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:输出语句所在的文件名
%-数字:表示该项的最小长度,若是不够,则用空格填充app

 

log4j中%5p的含义
由于日志级别分别有error,warn,info,debug,fatal5种,有些是5个字母的,有些是4个字母的,若是直接写%p就会对不齐,%-5p的意思是日志级别输出左对齐,右边以空格填充,%5p的意思是日志级别输出右对齐,左边以空格填充。spa

一、直接%p线程

 

二、%-5pdebug

三、%5p3d