在项目开发中,记录日志是非常重要的。你永远无法保证你的代码不出错。所以在一些关键的地方加上日志,是非常有必要的。
而今天要说的log4net它就是干这个事的。
log4net是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的工具。
下面我说下5种方式记录日志
1.记录到文本文件
2.记录到Xml文件
3.记录到SqlServer数据库
4.记录到Access数据库
5.记录到SQLite数据库
这只是目前我在做项目的时候基本上用到的这些,当然你也可以记录到Oracle、Mysql数据库也行,通过SMTP协议以邮件形式发送或UDP协议发送等等。还有很多方式我就不多说了。
下面开始上代码
文本文件记录
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <root> <level value="All" /> <appender-ref ref="TextRollingFileAppender"/> </root> <appender name="TextRollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net" > <bufferSize value="10" /> <param name="File" value="C:\\SystemLog\\" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="yyyyMMdd‘_log4net.txt‘" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n日志器:%logger %n错误描述:%message %n应用程序域:%domain %n计算机名:%username%newline"/> </layout> </appender> </log4net> </configuration>
XML文件记录
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <root> <level value="All" /> <appender-ref ref="XmlRollingFileAppender"/> </root> <appender name="XmlRollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net" > <bufferSize value="10" /> <param name="File" value="C:\\SystemLog\\" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="yyyyMMdd‘_log4net.xml‘" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.XmlLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> </log4net> </configuration>
SQLServer数据库记录
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net> <root> <level value="All" /> <appender-ref ref="AdoNetAppender"/> </root> <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="10" /> <connectionType value="System.Data.SqlClient.SqlConnection,System.Data, Version=1.0.3300.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" /> <connectionString value="server=20141202YZX\MSSQL2012;database=LogDB;uid=sa;pwd=1;" /> <commandText value="INSERT INTO t_Log(FAppName,FTimestamp,FThread,FLevel,FLogger,FMessage,FDomain,FUserName) VALUES (‘ConsoleAppTest‘,@FTimestamp,@FThread,@FLevel,@FLogger,@FMessage,@FDomain,@FUserName) " /> <parameter> <parameterName value="@FTimestamp" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@FThread" /> <dbType value="String" /> <size value="16" /> <layout type="log4net.Layout.PatternLayout" value="%thread" /> </parameter> <parameter> <parameterName value="@FLevel" /> <dbType value="String" /> <size value="32" /> <layout type="log4net.Layout.PatternLayout" value="%level" /> </parameter> <parameter> <parameterName value="@FLogger" /> <dbType value="String" /> <size value="64" /> <layout type="log4net.Layout.PatternLayout" value="%logger" /> </parameter> <parameter> <parameterName value="@FMessage" /> <dbType value="String" /> <size value="-1" /> <layout type="log4net.Layout.PatternLayout" value="%message" /> </parameter> <parameter> <parameterName value="@FDomain" /> <dbType value="String" /> <size value="128" /> <layout type="log4net.Layout.PatternLayout" value="%domain" /> </parameter> <parameter> <parameterName value="@FUserName" /> <dbType value="String" /> <size value="128" /> <layout type="log4net.Layout.PatternLayout" value="%username" /> </parameter> </appender> </log4net> </configuration>
Access数据库记录
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net> <root> <level value="All" /> <appender-ref ref="AdoNetAppender"/> </root> <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="10" /> <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SystemLog\log4net.mdb" /> <commandText value="INSERT INTO t_Log(FAppName,FTimestamp,FThread,FLevel,FLogger,FMessage,FDomain,FUserName) VALUES (‘ConsoleAppTest‘,@FTimestamp,@FThread,@FLevel,@FLogger,@FMessage,@FDomain,@FUserName) " /> <parameter> <parameterName value="@FTimestamp" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@FThread" /> <dbType value="String" /> <size value="16" /> <layout type="log4net.Layout.PatternLayout" value="%thread" /> </parameter> <parameter> <parameterName value="@FLevel" /> <dbType value="String" /> <size value="32" /> <layout type="log4net.Layout.PatternLayout" value="%level" /> </parameter> <parameter> <parameterName value="@FLogger" /> <dbType value="String" /> <size value="64" /> <layout type="log4net.Layout.PatternLayout" value="%logger" /> </parameter> <parameter> <parameterName value="@FMessage" /> <dbType value="String" /> <size value="-1" /> <layout type="log4net.Layout.PatternLayout" value="%message" /> </parameter> <parameter> <parameterName value="@FDomain" /> <dbType value="String" /> <size value="128" /> <layout type="log4net.Layout.PatternLayout" value="%domain" /> </parameter> <parameter> <parameterName value="@FUserName" /> <dbType value="String" /> <size value="128" /> <layout type="log4net.Layout.PatternLayout" value="%username" /> </parameter> </appender> </log4net> </configuration>
SQLite数据库记录
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net> <root> <level value="All" /> <appender-ref ref="AdoNetAppender"/> </root> <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="10" /> <connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> <connectionString value="Data Source=C:\\SystemLog\\log4net.sqlite;Version=3;" /> <commandText value="INSERT INTO t_Log(FAppName,FTimestamp,FThread,FLevel,FLogger,FMessage,FDomain,FUserName) VALUES (‘ConsoleAppTest‘,@FTimestamp,@FThread,@FLevel,@FLogger,@FMessage,@FDomain,@FUserName) " /> <parameter> <parameterName value="@FTimestamp" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@FThread" /> <dbType value="String" /> <size value="16" /> <layout type="log4net.Layout.PatternLayout" value="%thread" /> </parameter> <parameter> <parameterName value="@FLevel" /> <dbType value="String" /> <size value="32" /> <layout type="log4net.Layout.PatternLayout" value="%level" /> </parameter> <parameter> <parameterName value="@FLogger" /> <dbType value="String" /> <size value="64" /> <layout type="log4net.Layout.PatternLayout" value="%logger" /> </parameter> <parameter> <parameterName value="@FMessage" /> <dbType value="String" /> <size value="-1" /> <layout type="log4net.Layout.PatternLayout" value="%message" /> </parameter> <parameter> <parameterName value="@FDomain" /> <dbType value="String" /> <size value="128" /> <layout type="log4net.Layout.PatternLayout" value="%domain" /> </parameter> <parameter> <parameterName value="@FUserName" /> <dbType value="String" /> <size value="128" /> <layout type="log4net.Layout.PatternLayout" value="%username" /> </parameter> </appender> </log4net> </configuration>
以上是配置文件内。
具体源代码我已写好。
下载地址:http://pan.baidu.com/s/1hqM8nRI
原文:http://www.cnblogs.com/xmyzx/p/5054828.html