這是前些日子寫的小元件,用來將Common.Logging與Elmah整合在一起,Common.Logging是記錄Log的介接元件,本身只有很陽春的ConsoleOut與Trace的記錄功能,但它強在可以與.Net中最常見的三套Logging元件整合,整合的元件有log4net、Enterprise Library Logging、 NLog,讓你在寫中間層元件時,如:DAO、Controls等等,只需要對Common.Logging提供的介面操作,等到使用中間層元件的專案在決定用三套的其中一套來記錄Log,增加元件的使用彈性,但很可惜的不支援Elmah,雖然可以讓Common.Logging+Nlog(或其他二套)與Elmah寫在同一個DB中,讓Elmah也可以呈現Common.Logging所寫入的Log,但是專案就會多參考一個dll,感覺很討厭,所以就花了一點時間寫了一個與Elmah介接元作。
這是前些日子寫的小元件,用來將Common.Logging與Elmah整合在一起,Common.Logging是記錄Log的介接元件,本身只有很陽春的ConsoleOut與Trace的記錄功能,但它強在可以與.Net中最常見的三套Logging元件整合,整合的元件有log4net、Enterprise Library Logging、 NLog,讓你在寫中間層元件時,如:DAO、Controls等等,只需要對Common.Logging提供的介面操作,等到使用中間層元件的專案在決定用三套的其中一套來記錄Log,增加元件的使用彈性,但很可惜的不支援Elmah,雖然可以讓Common.Logging+Nlog(或其他二套)與Elmah寫在同一個DB中,讓Elmah也可以呈現Common.Logging所寫入的Log,但是專案就會多參考一個dll,感覺很討厭,所以就花了一點時間寫了一個與Elmah介接元作。
安裝
使用NuGet Package Manager中搜尋Common.Logging.Elmah下載安裝
或
使用Package Manager Console中輸入
PM> Install-Package Common.Logging.Elmah
設定
使用NuGet下載時會自動在web.config或app.config中增加設定
<configuration>
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
</sectionGroup>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Elmah.ElmahLoggerFactoryAdapter, Common.Logging.Elmah">
<arg key="MinLevel" value="all"/>
</factoryAdapter>
</logging>
</common>
</configuration>
其中MinLevel參數為最小要記錄的層級,使用Common.Logging.LogLevel的enum值(不分大小寫)。
namespace Common.Logging
{
public enum LogLevel
{
All = 0,
Trace = 1,
Debug = 2,
Info = 3,
Warn = 4,
Error = 5,
Fatal = 6,
Off = 7,
}
}