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

   呵呵,没有使用体会,也没研究过,高手指点。



本文转自 august 51CTO博客,原文链接:http://blog.51cto.com/august/7015,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6天前
|
监控 安全 Shell
防止员工泄密的措施:在Linux环境下使用Bash脚本实现日志监控
在Linux环境下,为防止员工泄密,本文提出使用Bash脚本进行日志监控。脚本会定期检查系统日志文件,搜索敏感关键词(如&quot;password&quot;、&quot;confidential&quot;、&quot;secret&quot;),并将匹配项记录到临时日志文件。当检测到可疑活动时,脚本通过curl自动将数据POST到公司内部网站进行分析处理,增强信息安全防护。
121 0
|
6天前
|
Java 开发工具 Windows
Windows环境下面启动jar包,输出的日志出现乱码的解决办法
Windows环境下面启动jar包,输出的日志出现乱码的解决办法
|
6天前
|
XML 开发框架 .NET
ASP.NET COR3.1 集成日志插件NLog
ASP.NET COR3.1 集成日志插件NLog
39 0
|
6天前
|
存储 数据采集 Kubernetes
一文详解K8s环境下Job类日志采集方案
本文介绍了K8s中Job和Cronjob控制器用于非常驻容器编排的场景,以及Job容器的特点:增删频率高、生命周期短和突发并发大。文章重点讨论了Job日志采集的关键考虑点,包括容器发现速度、开始采集延时和弹性支持,并对比了5种采集方案:DaemonSet采集、Sidecar采集、ECI采集、同容器采集和独立存储采集。对于短生命周期Job,建议使用Sidecar或ECI采集,通过调整参数确保数据完整性。对于突发大量Job,需要关注服务端资源限制和采集容器的资源调整。文章总结了不同场景下的推荐采集方案,并指出iLogtail和SLS未来可能的优化方向。
|
6月前
|
开发框架 .NET 测试技术
.NET Core 日志记录程序和常用日志记录框架
本文主要内容为.NET Core的日志记录程序和常使用的日志记录框架的简单使用 首先,打开VS2019新建一个ASP.NET Core Web Api项目,项目创建好后会有一个集成好的天气预报的类和控制器,接下来,我们的方法就在天气控制器里完成。
51 0
|
6天前
|
存储 JSON 数据管理
【云备份|| 日志 day1】项目认识 && 环境准备
【云备份|| 日志 day1】项目认识 && 环境准备
|
5月前
|
Docker 容器
docker环境日志常用命令
docker环境日志常用命令
66 0
|
6月前
|
Java 程序员 C#
C#日志系统 Log4net使用总结
C#日志系统 Log4net使用总结
50 0
|
8月前
|
自然语言处理 Java 开发工具
实战:ELK环境部署并采集springboot项目日志
实战:ELK环境部署并采集springboot项目日志
|
10月前
|
开发框架 监控 前端开发
ASP.NET Core MVC 从入门到精通之日志管理
ASP.NET Core MVC 从入门到精通之日志管理
75 0