天天看點

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" >

        <param name="ConversionPattern"  value="%d [%t] %-5p %c [%x] - %m%n"  />

    最後:需要修改你的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

   呵呵,沒有使用體會,也沒研究過,高手指點。

本文轉自 august 51CTO部落格,原文連結:http://blog.51cto.com/august/7015,如需轉載請自行聯系原作者