log4net组件

简介

官方文档
Log4net 有三个主要组件:logger, appenders 和 layouts。
在这里插入图片描述

layout

layout文档

PatternLayout

使用模式字符串可配置的灵活布局。格式化的结果依赖于 conversion 模式。

<layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="%date 线程ID:[%thread] %-5level - %message%newline"/>
</layout>

字符

占位符含义
%logger输出日志事件的日志器。默认完整打印记录器名称。如果给定了精度说明符,则只会打印记录器名称最右侧组件的相应编号。例:若日志器名为 “a.b.c”,模式为 %logger{2},将输出 “b.c”.
%date以 local time zone 输出日志事件的日期。推荐使用 log4net 日期格式化器,能得到更好的输出。
%utcdate输出universal time日期
%timestamp输出从应用程序启动到日志事件创建所经过的毫秒数。
%thread等同于(%t),线程名称或线程ID
%message输出函数调用时传入参数
%newline等同于(%n),输出换行。
%method输出发生日志请求时的方法名。警告:产生调用位置信息相当慢。除非执行速度不是问题,否则要避免使用它。
%%输出一个百分号
%stacktrace{level}输出日志事件的堆栈跟踪,堆栈跟踪级别说明符可以用大括号括起来
%property用于输出特定于事件的属性。

特征

  • 支持多种框架
  • 输出到多个日志目标
  • 分层日志架构
  • XML 配置
  • 动态配置
  • 日志上下文
  • 成熟的架构
  • 模块化和可扩展设计
  • 高性能与灵活性

输出到多个日志

常用
log4net.Appender.RollingFileAppender: 将日志事件写入文件系统中的文件。可以配置为基于日期或文件大小限制记录到多个文件。
log4net.Appender.ConsoleAppender 将日志事件写入应用程序的控制台。事件可能会转到标准我们的流或标准错误流。

其他
Appender Config Examples详细介绍
在这里插入图片描述

分层日志架构

XML 配置

BS端

在web.config文件汇总

CS端(wpf)

编程方式配置

(待补充)

嵌入单独XML配置文件

(待补充)

嵌入其他XML配置文件

在App.config中添加以下代码

configSetions 元素必须作为 configuration 元素的第一个子元素。否则,运行应用程序时,会报错。

<configSections>
    <!--log4net配置-->
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  </configSections>
   <log4net>
    <!--定义输出到文件中-->
    <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置-->
      <!--file可以指定具体的路径 D://logfile.txt。-->
      <!--<file value="D://logs//"/>-->
      <!--如果放在Debug下,当然名字你可以改 -->
      <file value="/logs/log"/>
      <!--是否追加到文件-->
      <appendToFile value="true"/>
      <!--变换的形式为日期-->
      <rollingStyle value="Date"/>
      <!--备份log文件的个数最多10个-->
      <maxSizeRollBackups value="10" />
      <!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。-->
      <maximumFileSize value="2MB" />
      <!-- 是否使用静态文件名-->
      <param name="StaticLogFileName" value="false" />
      <!--<datePattern value="yyyyMMdd-HH:mm:ss"/>-->
      <datePattern value="yyyy-MM-dd'.log'" />
      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="%date 线程ID:[%thread] %-5level - %message%newline"/>
      </layout>
    </appender>
    <!--定义日志的输出媒介-->
    <root>
      <!--指定将此级别及以上级别的log打印到log文件中-->
      <level value="DEBUG"/>
      <!--文件形式记录日志-->
      <appender-ref ref="RollingFileAppender"/>
    </root>
  </log4net>

整体图片
在这里插入图片描述

动态配置

动态配置文件存放路径

在调用函数之前加入以下代码(在构造函数中)

var repository = LogManager.GetRepository();
var appenders = repository.GetAppenders();
var targetApder = appenders.First(p => p.Name == "RollingFileAppender") as RollingFileAppender;//根据名称找到appender
targetApder.File = "D:/Media/Logs/Cache/";
targetApder.ActivateOptions();

日志上下文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值