园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志
下面先一点一点来学习如果进行配置
1.下载安装
- Nuget安装:
- Nuget控制台安装:
Install-Package log4net
- 官方下载最新版本:
http://logging.apache.org/log4net/download_log4net.cgi
2.创建数据库脚本
1 CREATE TABLE [dbo].[Log] ( 2 [Id] [int] IDENTITY (1, 1) NOT NULL, 3 [Date] [datetime] NOT NULL, 4 [Thread] [varchar] (255) NOT NULL, 5 [Level] [varchar] (50) NOT NULL, 6 [Logger] [varchar] (255) NOT NULL, 7 [Message] [varchar] (4000) NOT NULL, 8 [Exception] [varchar] (2000) NULL 9 )
3.配置文件
WebConfig的configSections节点增加
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
<log4net> <!--注册Appender--> <root> <level value="ALL" /> <appender-ref ref="AdoNetAppender" /> </root> <!--配置Appender--> <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="-1" /> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <connectionString value="data source=[服务器地址];initial catalog=[数据库];persist security info=True;user id=[账号];password=[密码];MultipleActiveResultSets=True;" /> <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> <parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@thread" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <parameter> <parameterName value="@log_level" /> <dbType value="String" /> <size value="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value="@logger" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value="@message" /> <dbType value="String" /> <size value="4000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter> <parameter> <parameterName value="@exception" /> <dbType value="String" /> <size value="2000" /> <layout type="log4net.Layout.ExceptionLayout" /> </parameter> </appender> </log4net>
4.设置监控
AssemblyInfo.cs中增加代码
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
5.测试代码
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); log.Error("Error是错误", new Exception("错误")); log.Fatal("Fatal是严重错误", new Exception("致命错误")); log.Info("Info是普通消息"); log.Debug("Debug是调试消息");
6.测试成功