0
点赞
收藏
分享

微信扫一扫

日志模块:log4net的简单使用


log4net

说起日志记录,相比已经工作的小伙伴都不陌生,在公司软件框架的里使用到的日志记录模块,可能是开源的,也可能是公司自己研发的。对于日志记录而言,最好的是全部的日志都记录下来,但是又能根据特定的规则进行存储,例如根据日期全部存储,根据功能模块、日志级别(例如系统异常的日志)单独存储,这样子对于后期的问题排查,极其方便,如果没有设置一些单独存储的规则,那么你的异常信息日志可能埋藏在几十M甚至几百M的大日志文件里面,如果真的那样子,查起来真的很浪费时间。在这里大叔就说一下自己用过的开源日志框架:log4net

官网

​​https://www.nuget.org/packages/log4net/​​

特点

这个日志框架给我最大的感受就是方便,只需要引用一下他的dll,并且配置一下配置文件,生成的日志文件路径以及命名就可以根据配置文件的设定自动加载出来了。

日志模块:log4net的简单使用_node.js

配置文件使用说明示例

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="RollingLogFileAppender_Err" />
<appender-ref ref="UdpAppender" />
</root>
<logger name="XYZ">
<level value="INFO" />
<appender-ref ref="XYZ_RollingFileAppender" />
</logger>
<appender name="XYZ_RollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="log\"/>
<param name="MaxSizeRollBackups" value="2" />
<param name="MaximumFileSize" value="100MB" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd/yyyy-MM-dd-"XYZ.log""/>
<param name="StaticLogFileName" value="false"/>
<param name="Encoding" value="utf-8"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
<!--<lockingmodel type="log4net.appender.fileappender+minimallock" />-->
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
</filter>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\"/>
<!--<param name="DatePattern" value="yyyy-MM-dd/"ReflectionLayout.log"" />-->
<appendToFile value="true"/>
<maxSizeRollBackups value="2"/>
<maximumFileSize value="100MB"/>
<rollingStyle value="Date"/>
<staticLogFileName value="false"/>
<param name="DatePattern" value="yyyy-MM-dd/yyyy-MM-dd".log""/>
<!--<datePattern value='yyyy-MM-dd/"log.log"' />-->

<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
</appender>
<appender name="RollingLogFileAppender_Err" type="log4net.Appender.RollingFileAppender">
<param name="File" value="log\" />
<param name="MaxSizeRollBackups" value="2" />
<param name="MaximumFileSize" value="100MB" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy-MM-dd/yyyy-MM-dd-Err".log""/>
<param name="StaticLogFileName" value="false"/>
<param name="Encoding" value="utf-8"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
</filter>
</appender>
<appender name="UdpAppender" type="log4net.Appender.UdpAppender">
<remoteAddress value="127.0.0.1"/>
<remotePort value="60001"/>
<encoding value="UTF-8"/>
<layout type="log4net.Layout.PatternLayout">
<!--<conversionPattern value="%d{yy-MM-dd HH:mm:ss,fff} %-5p - %m%n"/>-->
<conversionPattern value="%d{HH:mm:ss,fff} %-5p - %message%newline"/>
</layout>
</appender>
</log4net>
</configuration>

截图说明

以大叔目前使用的,log4net的配置方式有两种

日志模块:log4net的简单使用_node.js_02

配置方式一

日志模块:log4net的简单使用_.net_03


如图所示,目前这种方式,只需要自定义好命名标签,例如“RollingLogFileAppender”、“RollingLogFileAppender_Err”、“UdpAppender”,就可以在下面的配置规则中自定义日志存储的路径格式以及日志级别。这个是针对所有日志的,只要你在程序中用该日志模块进行日志输出,则都会按照你定义的格式记录。

日志模块:log4net的简单使用_node.js_04

配置方式二

日志模块:log4net的简单使用_c#_05


如图所示,这是第二种日志的配置方式,这种方式比较特别,但是也是极其有用。因为这种方式你可以定义特定的命名,而在程序中使用该命名则可以将该命名的日志,按照你设置的规则进行输出。

日志模块:log4net的简单使用_log4net_06


日志模块:log4net的简单使用_.net_07


如上图所示,上面的日志配置文件里面定义了name为“XYZ”的日志输出规格,那么在你实际调用的时候,如果日志队列里有命名为“XYZ”实例,则会其记录的日志,会按照以上配置文件“XYZ_RollingFileAppender”定义的格式进行日志输出。

使用场景:里面某个特定功能模块的日志记录,例如与MES系统交互的功能模块,想单独记录这个模块的交互信息到一个文件中,则可以通过这个方式去定义配置。

好了,本次的记录就到这里


举报

相关推荐

0 条评论