Log4net

1、添加引用

 

 2、添加一个应用程序配置文件,并将其改名

 

3、内部配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <logger name="logerror">
      <level value="ALL" />
      <appender-ref ref="ErrorAppender" />
    </logger>
    <logger name="loginfo">
      <level value="ALL" />
      <appender-ref ref="InfoAppender" />
    </logger>
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\LogError\\" />
    <param name="Encoding" value="UTF-8" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Composite" /> <!--<param name="MaximumFileSize" value="100MB" /> <param name="MaxSizeRollBackups" value="1000" />--> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy-MM-dd.'log'" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="异常时间:%date 线程ID:[%thread] 日志级别:%-5level 相关类:%logger - 描述:%message%newline" /> </layout> </appender> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log\\LogInfo\\" />
   <param name="Encoding" value="UTF-8" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Composite" /> <!--<param name="MaximumFileSize" value="100MB" /> <param name="MaxSizeRollBackups" value="1000" />--> <param name="StaticLogFileName" value="false" /> <param name="DatePattern" value="yyyy-MM-dd.'log'" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 相关类:%logger - 描述:%message%newline" /> </layout> </appender> </log4net> </configuration>

 配置样式:

%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):输出语句所在的文件名输出样式:

%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个字符则以空格填充。。 
%l(line):输出语句所在的行号。 
%数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。

  配置详解

<!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
<!--日志文件名开头,回滚用Date只需相对路径即可-->
<file value="c:\Log\Test.log"/>
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<!--文件名静态属性若为true,则日志文件名用<file>属性;否则使用<file>+<datePattern> --> <datePattern value="(yyyyMMdd)"/>
<param name="StaticLogFileName" value="false" />
<!--是否追加到文件,默认为true,通常无需设置--> <appendToFile value="true"/> <!--变换的形式为日期,这种情况下每天只有一个日志--> <!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义--> <!--<rollingStyle value="Date"/>--> <!--变换的形式为日志大小:Date|Size|Composite-->
<!--Date:根据日期类型(设置单个文件大小无意义);Size:根据文件大小区分;Composite:date与size的结合体--> <!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义--> <RollingStyle value="Composite"/> <!--每天记录的日志文件个数,与maximumFileSize配合使用--> <MaxSizeRollBackups value="10"/> <!--每个日志文件的最大大小--> <!--可用的单位:KB|MB|GB--> <!--不要使用小数,否则会一直写入当前日志--> <maximumFileSize value="2MB"/>

4、触发配置二选一

a、添加配置语句

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

 

 b、

<add key="log4net.Config" value="log4net.config"/>
<add key="log4net.Config.Watch" value="True"/>

 

 5、修改配置文件属性

 

 6、使用公共文件

/// <summary>
        /// 记录错误日志
        /// </summary>
        /// <param name="message"></param>
        /// <param name="ex"></param>
        public static void Error(string message, Exception ex)
        {
            ILog log =LogManager.GetLogger("logerror");
            if (ex != null)
                log.Error(message, ex);
            else
                log.Error(message);
        }
        /// <summary>
        /// 记录消息日志
        /// </summary>
        /// <param name="message"></param>
        public static void Info(string message)
        {
            ILog log = LogManager.GetLogger("loginfo");
            log.Info(message);
        }

 

posted @ 2021-11-04 14:32  疯狂阿坤  阅读(105)  评论(0编辑  收藏  举报