博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
充满梦想的log4net探索之旅
阅读量:4121 次
发布时间:2019-05-25

本文共 3591 字,大约阅读时间需要 11 分钟。

step1

引用log4net.dll

 

step2

指定log4net配置文件

添加

[assembly:log4net.Config.XmlConfigurator(Watch=true)]

 

step3

在步骤2中指定的配置文件添加log4net配置.

在示例配置中添加了控制台,文件以及数据库(mysql为例示范)日志,可按需要配置.

 

<?xmlversion="1.0" encoding="utf-8" ?>

<configuration>

<configSections>

<!--log4netconfiguration-->

<sectionname="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

</configSections>

 

<log4net>

<root>

<levelvalue="All" />

<appender-refref="ConsoleAppender" />

<appender-refref="FileAppender" />

<appender-refref="DBAppender"/>                        

</root>

 

<appendername="ConsoleAppender"type="log4net.Appender.ConsoleAppender">

<layouttype="log4net.Layout.PatternLayout">

<conversionPatternvalue="%date{yyyy-MM-dd HH:mm:ss} %-5level %logger.%method -%message%newline%exception%newline"></conversionPattern>

</layout>

</appender>

 

<appendername="FileAppender"type="log4net.Appender.RollingFileAppender">

<!--需修改file-->

<filevalue="log\\log.log" />

<paramname="MaxSizeRollBackups" value="10" />

<paramname="MaximumFileSize" value="5MB" />

<layouttype="log4net.Layout.PatternLayout">

<conversionPatternvalue="%date{yyyy-MM-dd HH:mm:ss} %-5level %logger.%method -%message%newline%exception%newline" />

</layout>

</appender>

 

<appendername="DBAppender"type="log4net.Appender.ADONetAppender">

<bufferSizevalue="1" />

<!--需修改连接字符串-->

<connectionTypevalue="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />

<connectionStringvalue="DataSource=localhost;Database=Log4netExplore;UserID=root;Password=root;Pooling=true;Max Pool Size=500;Min PoolSize=0"/>

<commandTextvalue="INSERT INTO log (Date,Thread,Level,Logger,Message,Exception) VALUES(@log_date, @thread, @log_level, @logger, @message, @exception)" />

<parameter>

<parameterNamevalue="@log_date" />

<dbTypevalue="DateTime" />

<layouttype="log4net.Layout.RawTimeStampLayout" />

</parameter>

<parameter>

<parameterNamevalue="@thread" />

<dbTypevalue="String" />

<sizevalue="255" />

<layouttype="log4net.Layout.PatternLayout">

<conversionPatternvalue="%thread" />

</layout>

</parameter>

<parameter>

<parameterNamevalue="@log_level" />

<dbTypevalue="String" />

<sizevalue="50" />

<layouttype="log4net.Layout.PatternLayout">

<conversionPatternvalue="%level" />

</layout>

</parameter>

<parameter>

<parameterNamevalue="@logger" />

<dbTypevalue="String" />

<sizevalue="255" />

<layouttype="log4net.Layout.PatternLayout">

<conversionPatternvalue="%logger.%method" />

</layout>

</parameter>

<parameter>

<parameterNamevalue="@message" />

<dbTypevalue="String" />

<sizevalue="4000" />

<layouttype="log4net.Layout.PatternLayout">

<conversionPatternvalue="%message" />

</layout>

</parameter>

<parameter>

<parameterNamevalue="@exception" />

<dbTypevalue="String" />

<sizevalue="2000" />

<layouttype="log4net.Layout.ExceptionLayout" />

</parameter>                

 

</appender>

 

 

</log4net>

<startup>

<supportedRuntimeversion="v4.0" sku=".NETFramework,Version=v4.5" />

</startup>

 

</configuration>

 

step4

在需要使用日志的类添加如下成员

        // Create alogger for use in this class

        private static readonly ILog log =LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        // NOTE that usingSystem.Reflection.MethodBase.GetCurrentMethod().DeclaringType

        // is equivalent totypeof(LoggingExample) but is more portable

        // i.e. you can copy the code directlyinto another class without

        // needing to edit the code.

 

然后调用log.Info("Hello,world!")即可.

 

效果

 

控制台日志

 

屏幕剪辑的捕获时间:2015/9/4 0:06

 

文本日志

 

屏幕剪辑的捕获时间:2015/9/4 0:07

 

数据库日志

 

 

屏幕剪辑的捕获时间:2015/9/4 0:10

 

 

注意:

获取当前methodname,可通过new StackFrame().GetMethod().Name,相当于new StackTrace().GetFrame(0).GetMethod().Name,获取调用堆栈上一个方法,可通过newStackTrace().GetFrame(1).GetMethod().Name.

你可能感兴趣的文章
《C++核心思想》学习笔记(3)
查看>>
《C++核心思想》学习笔记(4)
查看>>
C++ 11之lambda表达式
查看>>
C++名字查找
查看>>
C语言提高之技术模型层次、学习标准、特点、内存四区、函数调用模型
查看>>
C语言提高之指针初步
查看>>
二级指针用法示例
查看>>
二进制文件与文本文件
查看>>
编写、调用DLL的步骤
查看>>
递归实现字符串逆序打印
查看>>
EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP
查看>>
C++技术点积累(1)
查看>>
C++技术点积累(2)——拷贝构造函数、深拷贝、浅拷贝
查看>>
C++技术点积累(3)——对象初始化列表、运算符重载
查看>>
编译、安装rdesktop 1.8.3
查看>>
Win10开启远程桌面
查看>>
C++技术点积累(4)——继承、多态、抽象类
查看>>
函数指针基础及应用(正向调用、动态库升级成框架)
查看>>
C++技术点积累(5)——泛型编程(函数模板、类模板)
查看>>
C++技术点积累(6)——异常处理、输入和输出流
查看>>