Log4net入门(SQL篇)
2018-06-17 21:56:21来源:未知 阅读 ()
我们在Log4net入门(回滚日志篇)中详细讲述了如何将日志信息输出到日志文件中,在这一篇中,我们将讲述如何将日志文件写入SQL Server数据库,以方便我们分析统计日志信息。
首先,我们在SQL Server中创建一个名为“Management”的数据库,然后在该数据库中创建一个名为“Log”的表,该表结构如下所示:
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 CONSTRAINT [PK_Log] PRIMARY KEY CLUSTERED 10 ( 11 [Id] ASC 12 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 13 ) ON [PRIMARY]
其次,我们在Log4net.config配置文件中添加一个appender节点,然后在root节点中添加一个对新添加的appender节点的引用即可。Log4net.config的配置信息如下所示:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <configSections> 4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 5 </configSections> 6 7 <log4net> 8 <!-- 将日志输出到控制台 --> 9 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 10 <layout type="log4net.Layout.PatternLayout"> 11 <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 12 </layout> 13 </appender> 14 15 <!-- 将日志写到文件中 --> 16 <appender name="FileAppender" type="log4net.Appender.FileAppender"> 17 <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 18 <file value="Logs/FileAppender.log" /> 19 <!-- 将日志信息追加到已有的日志文件中--> 20 <appendToFile value="true" /> 21 <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 22 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 23 24 <layout type="log4net.Layout.PatternLayout"> 25 <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 26 </layout> 27 </appender> 28 29 <!-- 将日志以回滚文件的形式写到文件中 --> 30 <!-- 按文件大小切分日志文件 --> 31 <appender name="RollingFileAppenderBySize" type="log4net.Appender.RollingFileAppender"> 32 <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 33 <file value="Logs/RollingFileAppenderBySize.log" /> 34 <!-- 将日志信息追加到已有的日志文件中--> 35 <appendToFile value="true" /> 36 <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 37 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 38 <!-- 指定按文件大小切分日志文件 --> 39 <rollingStyle value="Size" /> 40 <!-- 指定备份日志文件的最大切分数量,如果超过指定切分文件个数,日志将进行覆写 --> 41 <maxSizeRollBackups value="5" /> 42 <!-- 指定每个切分日志文件的大小 --> 43 <maximumFileSize value="1KB" /> 44 <!-- 指定每个切分文件具有相同的名字 --> 45 <!-- 日志文件进行切分后,每个日志文件的名字分别为:RollingFileAppenderBySize.log, RollingFileAppenderBySize.log.1, ..., RollingFileAppenderBySize.log.5 --> 46 <staticLogFileName value="true" /> 47 48 <layout type="log4net.Layout.PatternLayout"> 49 <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 50 </layout> 51 </appender> 52 53 <!-- 按日期切分日志文件 --> 54 <appender name="RollingFileAppenderByDate" type="log4net.Appender.RollingFileAppender"> 55 <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 56 <file value="Logs/RollingFileAppenderByDate.log" /> 57 <!-- 将日志信息追加到已有的日志文件中--> 58 <appendToFile value="true" /> 59 <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 60 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 61 <!-- 指定按日期切分日志文件 --> 62 <rollingStyle value="Date" /> 63 <!-- 每分钟切分一个日志文件 --> 64 <!-- 每天切分一个日志文件的写法为:"yyyyMMdd" --> 65 <datePattern value="yyyyMMdd-HHmm" /> 66 <!-- 指定每个切分文件具有相同的名字 --> 67 <staticLogFileName value="true" /> 68 69 <layout type="log4net.Layout.PatternLayout"> 70 <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 71 </layout> 72 </appender> 73 74 <!-- 按日期切分日志文件,并将日期作为日志文件的名字 --> 75 <appender name="RollingFileAppenderNameByDate" type="log4net.Appender.RollingFileAppender"> 76 <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 77 <file value="Logs/" /> 78 <!-- 将日志信息追加到已有的日志文件中--> 79 <appendToFile value="true" /> 80 <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 81 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 82 <!-- 指定按日期切分日志文件 --> 83 <rollingStyle value="Date" /> 84 <!-- 日志文件的命名规则 --> 85 <datePattern value=""Logs_"yyyyMMdd-HHmm".log"" /> 86 <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> 87 <staticLogFileName value="false" /> 88 89 <layout type="log4net.Layout.PatternLayout"> 90 <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 91 </layout> 92 </appender> 93 94 <!-- 既按大小又按日期切分日志文件 --> 95 <appender name="RollingFileAppenderBySizeAndDate" type="log4net.Appender.RollingFileAppender"> 96 <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 97 <file value="Logs/RollingFileAppenderBySizeAndDate.log" /> 98 <!-- 将日志信息追加到已有的日志文件中--> 99 <appendToFile value="true" /> 100 <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 101 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 102 <!-- 指定既按大小又按日期切分日志文件 --> 103 <rollingStyle value="Composite" /> 104 <!-- 指定备份日志文件的最大切分数量,如果超过指定切分文件个数,日志将进行覆写 --> 105 <maxSizeRollBackups value="5" /> 106 <!-- 指定每个切分日志文件的大小 --> 107 <maximumFileSize value="1KB" /> 108 <!-- 每分钟切分一个日志文件 --> 109 <!-- 每天切分一个日志文件的写法为:"yyyyMMdd" --> 110 <datePattern value="yyyyMMdd-HHmm" /> 111 <!-- 指定每个切分文件具有相同的名字 --> 112 <staticLogFileName value="true" /> 113 114 <layout type="log4net.Layout.PatternLayout"> 115 <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 116 </layout> 117 </appender> 118 119 <!-- 将日志利用ADO.NET记录到数据库中 --> 120 <appender name="AdoNetAppender_SQLServer" type="log4net.Appender.AdoNetAppender"> 121 <!-- 缓冲区大小 --> 122 <bufferSize value="1" /> 123 <!-- 引用信息 --> 124 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 125 <!-- 连接到SQL Server的数据库连接字符串 --> 126 <connectionString value="Data Source=(local); Initial Catalog=Management; User ID=sa; Password=123456;" /> 127 <!-- 插入Log表的SQL语句 --> 128 <commandText value="INSERT INTO dbo.Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> 129 130 <parameter> 131 <parameterName value="@log_date" /> 132 <dbType value="DateTime" /> 133 <layout type="log4net.Layout.RawTimeStampLayout" /> 134 </parameter> 135 136 <parameter> 137 <parameterName value="@thread" /> 138 <dbType value="String" /> 139 <size value="255" /> 140 <layout type="log4net.Layout.PatternLayout"> 141 <conversionPattern value="%thread" /> 142 </layout> 143 </parameter> 144 145 <parameter> 146 <parameterName value="@log_level" /> 147 <dbType value="String" /> 148 <size value="50" /> 149 <layout type="log4net.Layout.PatternLayout"> 150 <conversionPattern value="%level" /> 151 </layout> 152 </parameter> 153 154 <parameter> 155 <parameterName value="@logger" /> 156 <dbType value="String" /> 157 <size value="255" /> 158 <layout type="log4net.Layout.PatternLayout"> 159 <conversionPattern value="%logger" /> 160 </layout> 161 </parameter> 162 163 <parameter> 164 <parameterName value="@message" /> 165 <dbType value="String" /> 166 <size value="4000" /> 167 <layout type="log4net.Layout.PatternLayout"> 168 <conversionPattern value="%message" /> 169 </layout> 170 </parameter> 171 172 <parameter> 173 <parameterName value="@exception" /> 174 <dbType value="String" /> 175 <size value="2000" /> 176 <layout type="log4net.Layout.ExceptionLayout" /> 177 </parameter> 178 </appender> 179 180 <root> 181 <!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF --> 182 <!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 --> 183 <!-- 如果没有定义LEVEL的值,则缺省为DEBUG --> 184 <level value="ALL" /> 185 <!-- 将日志输出到控制台 --> 186 <appender-ref ref="ConsoleAppender" /> 187 <!-- 将日志写到文件中 --> 188 <appender-ref ref="FileAppender" /> 189 <!-- 按文件大小切分日志文件 --> 190 <appender-ref ref="RollingFileAppenderBySize" /> 191 <!-- 按日期切分日志文件 --> 192 <appender-ref ref="RollingFileAppenderByDate" /> 193 <!-- 按日期切分日志文件,并将日期作为日志文件的名字 --> 194 <appender-ref ref="RollingFileAppenderNameByDate" /> 195 <!-- 既按大小又按日期切分日志文件 --> 196 <appender-ref ref="RollingFileAppenderBySizeAndDate" /> 197 <!-- 将日志利用ADO.NET记录到数据库中 --> 198 <appender-ref ref="AdoNetAppender_SQLServer" /> 199 </root> 200 </log4net> 201 </configuration>
至此,关于Log4net的基本用法就讲述完毕,上述内容的代码可以到以下地址下载:Download
参考文章:
1、Apache log4net Config Examples
2、Apache log4netTM SDK
3、Log4net Tutorial
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MySQL replace函数怎么替换字符串语句 2020-03-09
- PHP访问MySQL查询超时怎么办 2020-03-09
- mysql登录时闪退 2020-02-27
- MySQL出现1067错误号 2020-02-27
- mysql7.x如何单独安装mysql 2020-02-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash