当前位置:网站首页 > 技术博客 > 正文

log4net conversionpattern



  在NuGet程序包中搜索log4net并添加,此次我所用版本为2.0.17。如下图:

image

  右键项目,添加新建项,搜索选择应用程序配置文件,命名为log4net.config,步骤如下图:

image

1.2.1 log4net.config简单配置示例

  下面是一个简单的配置示例,详细节点及相应的说明详见 2. 配置文件节点详解 。

点击查看log4net.config配置
 
  

1.2.2 设置log4net.config配置文件属性

  点击log4net.config,将其文件属性设为始终复制,如下图:

image

  这里有两种方式引入配置文件。

1.3.1 在项目的 AssemblyInfo.cs 中引入配置文件

  首先在项目中新建一个Config文件夹,将之前创建的log4net.config文件放入其中,随后在 AssemblyInfo.cs 中添加如下语句:

image

1.3.2 在项目运行时动态引入配置文件

  使用固定语句引入配置文件,如下所示,其中,configFilePath 为配置文件的绝对路径。

 
  

  我们首先创建名为 Log4Helper 的类,并使用固定的语句实例化对应的Log对象,然后调用其对应的方法即可写入日志。示例代码如下:

点击查看Log4Helper代码
 
  

  最后一步就是在主程序中引用 Log4Helper 中的日志记录方法,如下所示:

 
  

  根据上面 log4net.config 配置中 file 节点中的地址,在项目中会生成 Log 文件夹,该文件夹下会生成类似 DefalutLog_2024-07-01.log 的文件。该文件名由 file 节点和 datePattern 节点两部分组合而成,其中,节点需要被设置为 false ,若为 true ,则当前最新日志文件名永远为 file 节点中的名字,其余日志会根据 datePattern 节点自动添加后缀。

  打开日志文件,会发现里面只有 WARN 警告信息,例如:

 
  

  这是因为配置中的 filter 过滤节点,详见注释,将其注释再次运行,则会正常显示全部日志信息。

  log4net的主要组成有四部分,分别是 Logger、Appender、Layout、Filter等,详见下方。

  以上文的配置为例解释:

 
  

  level 定义记录的日志级别,就是说,你要记录哪个级别以上的日志,级别由低到高依次是:

  在具体写日志时,一般可以这样理解日志等级:

 
  

  appender-ref,要引用的 appender 的名字,由 Layout 控制输出格式。

  最后还要说一个LogManager类,它用来管理所有的Logger。它的GetLogger静态方法,可以获得配置文件中相应的Logger:

  以上文的 FileAppenderDefault 节点为例:

点击查看 FileAppenderDefault 节点配置
 
  

  每个节点均写有注释,这里额外介绍下 appender 的输出方式( type 属性),如下所示:

点击查看 appender 输出方式
 
  

  filter只能作为 appender 的子元素,type 属性表示 Filter 的类型。常用子元素 param 数量0个或多个,作用设置一些参数。具体例子详见上文 2.2 Appender 节点配置详解 。

  额外补充下 filter 的类型说明:

 
  

  layout 节点只能作为 appender 的子元素。type 属性表示 Layout 的类型。具体例子详见上文 2.2 Appender 节点配置详解 。

  额外补充 layout 节点的 type 属性取值:

 
  

  这其中我们主要使用的还是PatternLayout 类型,而在 ConversionPattern 节点中,我们可以进一步的配置日志输出格式,以 PatterLayout 的格式化字符串输出为例:

点击查看 PatterLayout 的格式化字符串
 
  

  额外补充下 PatterLayout 格式修饰符:

格式修饰符 对齐 最小宽 最大宽 说明 %20logger 右对齐 20 无 如果logger名不足20个字符,就在左边补空格 %-20logger 左对齐 20 无 如果logger名不足20个字符,就在右边补空格 %.30logger 左对齐 无 30 超过30个字符将截断 %20.30logger 右对齐 20 30 logger名要在20到30之间,少了在左边补空格,多了截断 %-20.30logger 左对齐 20 30 logger名要在20到30之间,少了在右边补空格,多了截断

  自定义扩展输出,通过继承 log4net.Layout.PatternLayout 和 log4net.Layout.Pattern.PatternLayoutConverter 类,使用 log4net.Core.LoggingEvent 类的方法得到了要输出的 LogEntity 类的名称。

  然后通过反射得到各个属性的值,使用 PatternLayout 类 AddConverter 方法传入得到的值,在 PatternLayoutConverter 中对其进行处理。注意配置文件 Appender 中的 Layout type 用到的类的命名空间以及类名,要同步更改为自定义类的。详见示例:

点击查看自定义拓展类的代码
 
  

  与之对应的,我们的配置文件也添加以下代码:

点击查看配置文件新增代码
 
  

  接下来我们新建一个类 LabwareModel,并在帮助类 Log4Helper 中添加调用 CustomLog 的方法,来测试能否输出自定义类 LabwareModel 中的内容。

点击查看自定义类 LabwareModel
 
  

  帮助类 Log4Helper 如下:

点击查看帮助类 Log4Helper
 
  

  在主程序中调用进行测试:

 
  

  根据上面 FileAppenderCustom 配置中 file 节点中的地址,在项目中会生成 Log 文件夹,该文件夹下会生成类似 CustomLog_2024-07-01.log 的文件。打开文件会看到输出内容如下:

点击查看日志输出内容
 
  

  以上就是关于 Log4Net 配置详解。

版权声明


相关文章:

  • hikaricp 配置2025-07-21 12:29:59
  • 芯片加密后可以读取吗2025-07-21 12:29:59
  • 消息中间件的原理2025-07-21 12:29:59
  • vs2010安装步骤2025-07-21 12:29:59
  • ncurses-devel是什么2025-07-21 12:29:59
  • rsa属于非对称加密算法吗2025-07-21 12:29:59
  • java实现网络爬虫2025-07-21 12:29:59
  • linux中的ldd命令简介2025-07-21 12:29:59
  • pyqt5 pypi2025-07-21 12:29:59
  • oracle 视图 rowid2025-07-21 12:29:59