Log4Net Demo

1 将 log4net.dll 拷到 Debug 目录

2 项目/右击依赖项 / 添加项目引用 / 点击“浏览”按钮 / 选择dll / 确定

3 右击 log4net.config / 属性 / 复制到输出目录 选择 “如果较新则复制”

4 App.config 

   <configuration>
     <configSections>    
     </configSections>
     <log4net configSource="log4net.config" />
   </configuration>

5 AssemblyInfo.cs 增加如下代码
   

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

6 MainWindow.xaml.cs 增加如下代码

   using log4net;
   using log4net.Config;   

7 log 输出

  public static ILog logger = LogManager.GetLogger(typeof(MainWindow));

   string strLog = string.Format("log message test {0} , {1}", 123, "abc");
   logger.Debug("Debug  " + strLog);
   logger.Info("Info  " + strLog);
   logger.Error("Error  " + strLog);

8 WPF 工程控制台输出,右击项目属性 / 应用程序 / 输出类型 / 选择 “控制台应用程序”

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <!--
		https://www.cnblogs.com/linybo/p/14046171.html
		https://www.cnblogs.com/shanzhiming/p/12207896.html
    https://www.jianshu.com/p/0b0731f04a39
    		
	-->
  <configSections>
    <!-- log4net的定义 -->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>

  <log4net>
    <root>
      <!--Level几种取值: OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL-->
      <level value="ALL" />
      <!--文件形式记录日志-->
      <appender-ref ref="LogFileAppender" />
      <appender-ref ref="InfoAppender" />
      <appender-ref ref="ErrorAppender" />
      
      <!--控制台控制显示日志-->
      <appender-ref ref="ConsoleAppender" />
    </root>
    <logger name="loginfo">
      <level value="INFO" />
      <appender-ref ref="InfoAppender" />
      <additivity value="true"/>
    </logger>
    <logger name="logerror">
      <level value="ERROR" />
      <appender-ref ref="ErrorAppender" />
    </logger>

    <!-- 将日志输出到控制台 -->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--保存路径 项目启动时自动创建log、logError文件-->
      <file value="Log/debug/" />
      <encoding value="utf-8" />
      <appendToFile value="true" />
      <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
      <rollingStyle value="Date" />
      <!--这是按日期产生文件夹-->
      <datePattern value="yyyyMMdd'_debug.log'" />
      <!--每个文件的大小。只在混合方式与文件大小方式下使用。超出大小后在所有文件名后自动增加正整数重新命名,
			    数字最大的最早写入。可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志-->
      <param name="MaxFileSize" value="1048576" />
      <!--保留的log文件数量 超过此数量后 自动删除之前的, 只有在 按Size分割时有效 设定值value="-1"为不限文件数-->
      <param name="MaxSizeRollBackups" value="100" />
      <param name="RollingStyle" value="Composite" />
      <!--根据文件的大小和日期滚动文件-->
      <!--是否只写到一个文件中-->
      <param name="StaticLogFileName" value="false" />

      <!-- layout 控制Appender的输出格式,也可以是xml  一个Appender只能是一个layout-->
      <!-- <param name="ConversionPattern"  value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger   
				  操作者ID:%property{Operator} 操作类型:%property{Action}%n  当前机器名:%property%n当前机器名及登录用户:%username %n  
                  记录位置:%location%n 消息描述:%property{Message}%n   异常:%exception%n 消息:%message%newline%n%n" />
				  
					%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
					%n(new line):换行
					%d(datetime):输出当前语句运行的时刻
					%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
					%t(thread id):当前语句所在的线程ID
					%p(priority):等同于:%level 日志的当前优先级别,即DEBUG、INFO、WARN…等
					%c(class):当前日志对象的名称
					%f(file):输出语句所在的文件名。
					%l(line):输出语句所在的行号。
					%数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。(因为日志的几个等级的单词长度不一样,通过设置字符长度,可以示日志更加整齐)
			-->

      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] %l: %message%newline" />
      </layout>
      <!--layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%newline %nDatetime:%utcdate %nHostName:%property{log4net:HostName} %nThreadID:[%thread] %nLogLevel:  %-5level %nClassName:%logger property: [%property{NDC}] - %nDescription:%message%newline %n" />
			</layout-->

    </appender>

    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log/info/" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="yyyyMMdd'_info.txt'" />
      <param name="MaxFileSize" value="1048576" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <!-- 等级过滤 -->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO"/>
        <levelMax value="INFO"/>
        <!-- <param name="LevelToMatch" value="INFO" />-->
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %message%newline" />
      </layout>
    </appender>

    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="log/error/" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="yyyyMMdd'_error.txt'" />

      <param name="MaxFileSize" value="1048576" />
      <param name="MaxSizeRollBackups" value="100" />

      <param name="StaticLogFileName" value="false" />
      <!-- 等级过滤 -->
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR"/>
        <levelMax value="OFF"/>
        <!-- <param name="LevelToMatch" value="INFO" />-->
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger %l: %message%newline" />
      </layout>
      <!--< > = <> %n = 回车-->
    </appender>

    <!--定义输出到windows事件中-->
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
      </layout>
    </appender>

    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
      <to value="bobby.chopra@prcm.com"/>
      <from value="TagFileUploader@prcm.com"/>
      <subject value="TagFileUploader ERROR"/>
      <smtpHost value="prc-mn-ex01"/>
      <bufferSize value="512"/>
      <lossy value="true"/>
      <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="ERROR"/>
      </evaluator>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
      </layout>
    </appender>
    
  </log4net>
</configuration>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值