VS.NET環境下實現日誌系統的幾種方式

一般大型WEB項目,都要考慮在系統中實現日誌系統。下面,簡單提供幾種在.net環境下,實現日誌系統的方案:
1、Log4net
log4net是一個apache基金資助的項目log4j的.net移植版本,它是一個.net的dll,可以方便的加載到開發項目中,實現程序調試和運行的時候的日誌信息輸入,比.net自己提供的debug類和trace類要提供更多功能。
首先你應該下載log4net.dll並引入到你的項目References中.
第二步:配置web.config。
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<root>
<level value="Debug" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
<logger name="WindFly.Logging">
<level value="DEBUG"/>
</logger>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<param name="File" value="log.txt" />
<param name="AppendToFile" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n"/>
<param name="Footer" value="[Footer]\r\n"/>
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m %L %F%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="WARN" />
</filter>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
最後:需要修改你的global.asa.cs. 配置application對象啓動的時候加載log4net配置. 這一步是不可以缺少的.
void Application_Start(Object sender, EventArgs e)
{
log4net.Config.DOMConfigurator.Configure();
}
log4net 有四種主要的組件,分別是:Logger(記錄器)、Repository(庫)、Appender(附着器)、Layout(佈局),可將日誌配置成寫入文本,數據庫等。
2、Health Monitoring feature
在 ASP.NET 2.0 中,可以使用 healthMonitoring 屬性監測事件。healthMonitoring 屬性是一個基於方法的provider,在這裏可以構造自己的provider。利用healthMonitoring屬性,我們可以諸如記錄錯語、成功的事件等,對不同的數據源,如事件日誌,Sql Server甚至對於自己通過繼承WebEventProvider類創建自己的providers。首先,要安裝WEB 事件數據庫,可以在Visual Studio 2005 命令行中使用下面的命令來完成:aspnet_regsql.exe -E -S <ServerName> -A w
下面是一個使用了通過繼承WebEventProvider類創建自己的providers的例子<healthMonitoring>
<bufferModes>
<add name="Extra Critical Notification"
maxBufferSize="10"
maxFlushSize="5"
urgentFlushThreshold="1"
regularFlushInterval="Infinite"
urgentFlushInterval="00:01:00"
maxBufferThreads="1" />
</bufferModes>
<providers>
<add name="MySqlWebEventProvider"
connectionStringName="SqlServices"
maxEventDetailsLength="1073741823"
buffer="true"
bufferMode="Extra Critical Notification"
type="System.Web.Management.SqlWebEventProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
<eventMappings>
<add name="My Critical Event" type="MyWebEvents.MyCriticalEvent,MyWebEvents"/>
</eventMappings>
<profiles>
<add name="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00" custom="" />
</profiles>
<rules>
<add name="Critical event" eventName="My Critical Event" provider="MySqlWebEventProvider" profile="Default"/>
</rules>
</healthMonitoring>
healthMonitoring有5個子節點。
  bufferModes,在此可以定義一個Provider的緩衝區大小。
 Providers,在此說明處理事件的Providers。
  eventMappings, 在此可以畫出與友好事件類型相關的事件名稱。
  profiles, 在此定義一個可以用來配置事件的參數集集合。
  rules, 在此畫出Providers的事件圖。
3、Logging Application block
如果你的應用程序需要記錄日誌到Event Log, E-mail, Database, Message Queue, Windows Management Instrumentation (WMI), TextFile,你就應該考慮使用日誌組件來提供這些功能,特別如果你需要基於分類和優先級來過濾日誌消息,需要格式化消息,或者需要不改動代碼的情況下改變消息的目的地。日誌組件同時被設計成可擴展的,包括方便的創建客戶訂製的Formatter和TraceListener。
請參見偶的上一篇文章。
4、Microsoft Operations Manager 2005
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章