日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Log4Net ,.net和SQL Server的完美结合

發(fā)布時間:2024/9/5 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Log4Net ,.net和SQL Server的完美结合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
參考鄭大哥的這篇文章,http://www.cnblogs.com/zhengyun_ustc/archive/2005/07/19/196049.html
不過,我在我這個項目中,具體使用的方法有點不同。
這個學(xué)生處學(xué)生信息管理系統(tǒng),業(yè)務(wù)日志比較簡單,其實并不需要使用log4net。所以在這個項目中,只用log4net來記錄錯誤日志。

1.建立配置文件。以下配置,是把信息記錄到數(shù)據(jù)庫和一個以當(dāng)前日期為名字的日志txt文件。從數(shù)據(jù)庫的insert語句就可以看出數(shù)據(jù)庫的
Code
<?xml?version="1.0"?encoding="utf-8"??>
<configuration>
??
<configSections>
????????
<section?name="log4net"?type="log4net.Config.Log4NetConfigurationSectionHandler,?log4net"/>
????
</configSections>
??
<log4net>
????
<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="server=codebase;database=StuDepartmentOA;uid=sadis;pwd=123;timeout=300;"?/>
??????
<commandText?value="INSERT?INTO?ErrLog?([Time],[errLevel],[Info],[Exception])?VALUES?(@time,?@level,?@info,?@exception)"?/>
??????
<parameter>
????????
<parameterName?value="@time"?/>
????????
<dbType?value="DateTime"?/>
????????
<layout?type="log4net.Layout.RawTimeStampLayout"?/>
??????
</parameter>
??????
<parameter>
????????
<parameterName?value="@level"?/>
????????
<dbType?value="String"?/>
????????
<size?value="8"?/>
????????
<layout?type="log4net.Layout.PatternLayout">
??????????
<conversionPattern?value="%p"?/>
????????
</layout>
??????
</parameter>
??????
<parameter>
????????
<parameterName?value="@info"?/>
????????
<dbType?value="String"?/>
????????
<size?value="200"?/>
????????
<layout?type="log4net.Layout.PatternLayout">
??????????
<conversionPattern?value="%m"?/>
????????
</layout>
??????
</parameter>
??????
<parameter>
????????
<parameterName?value="@exception"?/>
????????
<dbType?value="String"?/>
????????
<size?value="1000"?/>
????????
<layout?type="log4net.Layout.PatternLayout">
??????????
<conversionPattern?value="%exception"?/>
????????
</layout>
??????
</parameter>
????
</appender>
????
<appender?name="FileErrLogAppender"?type="log4net.Appender.RollingFileAppender">
??????
<!--日志文件的存儲路徑-->
??????
<file?value="bin\Log\"/>
??????
<appendToFile?value="true"/>
??????
<rollingStyle?value="Date"/>
??????
<datePattern?value="yyyy-MM-dd.LOG"/>
??????
<!--根據(jù)日期,定義文件名-->
??????
<staticLogFileName?value="false"/>
??????
<!--日志文件輸出格式-->
??????
<layout??type="log4net.Layout.PatternLayout">
????????
<param?name="Header"?value="[Header]"/>
????????
<param?name="Footer"?value="[Footer]"/>
????????
<ConversionPattern?value="%nTime:?%d?%n?Level:?%level???Info:?%message?%nException:?%exception"/>
??????
</layout>
????
</appender>

????
<!--?Setup?the?root?category,?add?the?appenders?and?set?the?default?level?-->
????
<root>
??????
<level?value="WARN"/>
??????
<level?value="INFO"/>
??????
<level?value="DEBUG"/>
????
</root>
????
<!--?Specify?the?level?for?some?specific?categories?-->
????
<logger?name="logger">
??????
<level?value="WARN"/>
??????
<level?value="INFO"/>
??????
<level?value="DEBUG"/>
??????
<appender-ref?ref="FileErrLogAppender"/>??
??????
<appender-ref?ref="ADONetAppender"?/>
????
</logger>

??
</log4net>
</configuration>

對應(yīng)的數(shù)據(jù)庫表:
Code
USE?[StuDepartmentOA]
GO
/******?對象:??Table?[dbo].[ErrLog]????腳本日期:?08/16/2009?10:09:31?******/
SET?ANSI_NULLS?ON
GO
SET?QUOTED_IDENTIFIER?ON
GO
SET?ANSI_PADDING?ON
GO
CREATE?TABLE?[dbo].[ErrLog](
????
[ID]?[int]?IDENTITY(1,1)?NOT?NULL,
????
[time]?[datetime]?NOT?NULL,
????
[errLevel]?[varchar](8)?COLLATE?Chinese_PRC_CI_AS?NOT?NULL,
????
[info]?[nvarchar](200)?COLLATE?Chinese_PRC_CI_AS?NOT?NULL,
????
[exception]?[varchar](1000)?COLLATE?Chinese_PRC_CI_AS?NULL,
?
CONSTRAINT?[PK_errLog]?PRIMARY?KEY?CLUSTERED?
(
????
[ID]?ASC
)
WITH?(IGNORE_DUP_KEY?=?OFF)?ON?[PRIMARY]
)?
ON?[PRIMARY]

GO
SET?ANSI_PADDING?OFF

2.把配置文件放到Web目錄下,跟web.config同一層。

3.建立globe.asax文件,在Application_Start中加入
log4net.Config.XmlConfigurator.ConfigureAndWatch(new?System.IO.FileInfo(Server.MapPath("~")?+?@"\log4net.config"));
4.再加入相應(yīng)的引用。然后如果項目中有其他類庫,那么再在對應(yīng)用到的類庫中加入引用。
(!!這里需要注意的是,如果用了NHibernate,就需要注意了,必須加入對應(yīng)版本的log4net,不然會出錯。我本來加了一個1.2.9的log4net,但NHibernate默認(rèn)用附帶的1.2.10,運行時就報錯了)

5.實際使用:
Code
using?System;
using?log4net;
namespace?DAL
{
????
///?<summary>
????
///?LogHelper?的摘要說明
????
///?</summary>
????public?class?LogHelper
????{
????????
private?static?ILog?Logger?=?log4net.LogManager.GetLogger("logger");
????????
public?static?void?Debug(string?message,?Exception?ex)
????????{
????????????
if(Logger.IsDebugEnabled)
????????????{
????????????????Logger.Debug(message,?ex);
????????????}
????????}
????????
public?static?void?Debug(string?message)
????????{
????????????
if?(Logger.IsDebugEnabled)
????????????{
????????????????Logger.Debug(message);
????????????}
????????}
????????
public?static?void?Info(string?message,?Exception?ex)
????????{
????????????
if(Logger.IsInfoEnabled)
????????????{
????????????????Logger.Info(message,?ex);
????????????}
????????}
????????
public?static?void?Info(string?message)
????????{
????????????
if?(Logger.IsInfoEnabled)
????????????{
????????????????Logger.Info(message);
????????????}
????????}
????????
public?static?void?Error(string?message,?Exception?ex)
????????{
????????????
if?(Logger.IsErrorEnabled)
????????????{
????????????????Logger.Error(message,ex);
????????????}
????????}
????????
public?static?void?Error(string?message)
????????{
????????????
if?(Logger.IsErrorEnabled)
????????????{
????????????????Logger.Error(message);
????????????}
????????}
????}
}

轉(zhuǎn)載于:https://www.cnblogs.com/kenkofox/archive/2009/08/12/1544501.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Log4Net ,.net和SQL Server的完美结合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。