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 呵呵,没有使用体会,也没研究过,高手指点。本文出自 51CTO.COM技术博客 |



august
博客统计信息
热门文章
最新评论
友情链接

