IT知识库 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> .NET新手区 -> Log4net入门(SQL篇) -> 正文阅读

[.NET新手区]Log4net入门(SQL篇)

Log4net入门(SQL篇)   我们在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="&quot;Logs_&quot;yyyyMMdd-HHmm&quot;.log&quot;" />
 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
上一篇文章      下一篇文章      查看所有文章
加:2016-12-14 20:58:46  更:2017-05-14 06:25:38 
 
  .NET新手区 最新文章
将ZIP文件添加到程序集资源文件然后在运行时
Web服务的调用
.NET创建WebService服务简单的例子
多线程编程学习笔记——任务并行库(三)
序列化和反序列化
Spring学习之路
C#基础笔记(第五天)
DataTable的AcceptChanges()方法和DataRow的
浏览器判断
牛津计划折射2016年微软开源领域“大步走”
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年10日历
2018-10-21 17:07:23
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库