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.