Log4Net 日志 使用基本设置(转)

本文详细介绍了log4net这一流行的开源日志组件。log4net能够将日志信息记录到多种媒介,如文件、控制台、Windows事件日志和数据库等。文章还深入探讨了log4net的四大核心组件,并提供了详细的配置文件示例,同时展示了如何在程序中进行动态配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 log4net是一个开源日志记录组件。
      利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。
        我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。
        要想获取最新版本的log4net组件库,可以到官方网站 http://logging.apache.org/log4net/下载。

    log4net  有四种主要的组件,分别是 Logger (记录器) , Repository (库) , Appender (附着器)以及 Layout (布局)。
   Logger 是应用程序需要交互的主要组件,它用来产生日志消息。
  Repository主要用于负责用户对象组织结构的维护。
  Appendder定义目的地的输出介质。一个日志对象可以包含很多个Appendder,对每个Appendder通过设置参数进行不同的配置。
     Layout用于向用户显式最后经过格式化的输出消息。一个Appendder实现一个layout。

      定义配置文件
      (1)在log4net配置文件中进行定义
      (2)在应用程序中进行动态配置

(1)在配置文件中的定义基本设置如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <configSections>
      <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
   </configSections>
   <appSettings>
   </appSettings>
   <log4net> 
      <root>      
         <!-- 这里可省略日志输出级别,分别在不通的输出介质中定义-->

         <!--文件形式记录日志 -->
         <appender-ref ref="RollingFileAppender" />
         <!--控制台控制显示日志-->
         <appender-ref ref="ConsoleAppender" />
         <!--Windows事件日志-->
         <appender-ref ref="EventLogAppender" />
         <!--数据库事件日志-->
         <appender-ref   ref="AdoNetAppender" />
      </root>
   
   <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
      
      <!--定义输出到文件中-->
      <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
         <!--定义文件存放位置-->
         <file value="..\\..\\Output\\log\\" />
         <!--是否在文件中追加日志信息-->
         <appendToFile value="true" />
         <!--如果一直输出到同一文件中,则不需要下面代码-->     
      <!--文件输出以日期方式滚动-->
      <rollingStyle value="Date" />
      <!--日志文件名称以输出日期命名,可更改其他日期输出方式-->
      <datePattern value="yyyyMMdd'.log'" />
      <!--表明输出的日志信息是否一直在同一文件中-->
      <staticLogFileName value="false"/>
      <!--备份文件的最大文件数目-->
      <maxSizeRollBackups value="10" />       
         <!--输出格式-->
         <layout type="log4net.Layout.PatternLayout">
            <footer value="this log write by UIH use Log4Net"/>
            <conversionPattern value="�te >> %-5level %message%newline" />
         </layout>
         <!--日志输出级别-->
         <threshold value="ALL"/>
         <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="ALL" />
            <levelMax value="FATAL" />
           </filter>
      </appender>

       <!--定义输出到控制台命令行中-->
      <appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
         <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%n�te >> %-5level %message%newline" />
         </layout>
        <!--针对不同的输出级别显示不同的颜色-->
         <mapping>
            <level value="FATAL" />
            <foreColor value="Red" />
            <backColor value="White" />
         </mapping>
         <mapping>
            <level value="ERROR" />
            <foreColor value="Red, HighIntensity" />
         </mapping>
           <!--日志输出级别-->
         <threshold value="ALL"/>
         <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="ALL" />
            <levelMax value="FATAL" />
         </filter>
      </appender>
      
       <!--定义输出到windows事件中-->
        <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
            <layout type="log4net.Layout.PatternLayout">
               <conversionPattern value="%n�te >> %-5level thread: %thread, %message%newline" />
            </layout>
            <threshold value="ERROR"/>
           <filter type="log4net.Filter.LevelRangeFilter">
              <levelMin value="ERROR" />
              <levelMax value="FATAL" />
           </filter>
      </appender>

<!--定义输出到数据库中,本例以sqlServer为例-->
      <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <!--设置数据库输出的最小数量,建议设为1 ,若设为n,表示小于n条记录不输出到数据库-->
      <bufferSize value="1" />
            <ConnectionType  value = "System.Data.SqlClient.SqlConnection, System.Data, version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <ConnectionString  value = "data source=服务器名;initial catalog=数据库名;User ID=用户名;Password=密码;integrated security=false;persist security info=True;">
        <!--插入数据库的字段,item为字段名-->         
         <commandText value="INSERT INTO pacs_log ([dtDate],[ThreadID],[Level],[Logger],[Message],[Exception]) VALUES (@item1, @item2, @item3)" />
         <!--分级输出-->  
         <!--定义各个参数-->
         <parameter>
           <parameterName value="@item1" />
           <dbType value="DateTime" />
           <layout type="log4net.Layout.RawTimeStampLayout"/>
     </parameter>
     <parameter>
           <parameterName value="@item2" />
           <dbType value="String" />
           <size value="50" />
           <layout type="log4net.Layout.PatternLayout">
                 <conversionPattern value="%thread" />
           </layout>
     </parameter>
     <parameter>
           <parameterName value="@item3" />
           <dbType value="String" />
           <size value="200" />
           <layout type="log4net.Layout.PatternLayout">
                 <conversionPattern value="%level" />
           </layout>
     </parameter>
                  <threshold value="ERROR"/>
                                 <filter type="log4net.Filter.LevelRangeFilter">
                                    <levelMin value="ERROR" />
                                    <levelMax value="FATAL" />
                                 </filter>
      </appender> 
   </log4net>
</configuration>

(2)在应用程序中进行动态配置
        举例说明:
        AdoNetAppender中的ConnectionType,ConnectionString在程序中动态设置,如下
       log4net.Repository.Hierarchy.Hierarchy hier = log4net.LogManager.GetRepository() as log4net.Repository.Hierarchy.Hierarchy;
                  if (hier != null)
                  {   //get ADONetAppender  
                        log4net.Appender.IAppender[] appendders = hier.GetAppenders();
                        foreach (var appender in appendders)
                        {
                              if (appender is log4net.Appender.AdoNetAppender)
                              {
                                    log4net.Appender.AdoNetAppender adoAppender = (log4net.Appender.AdoNetAppender)appender;
                        adoAppender.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
                                    adoAppender.ConnectionString = "data source=uih-pacs\\uihpacs;initial catalog=uihpacsdb;User ID=sa;Password=uihpacs2012;integrated security=false;persist security info=True;";
                                    adoAppender.ActivateOptions();
                              }
                        }

            
ExtJs简介: Extjs在经过两年的发展,Ext JS从2.0版开始,越来越受用户欢迎,今年,Extjs不但推出3.0版本,而且还推出了Ext Core,准备在Web2.0网站开发中占一席之地,如在 Extjs2.x版本中为人所诟病的速度问题在ExtJs3.0中有所改善。不过,最革命性的改变还是ExtJs中新增的Ext.Direct功能,它实现了服务器端的无关性。 在3.2版本中,Ext将增加移动组件,进军移动市场,这将是一次革命性的改进,同时在4.0版本中,除了对HTML5的支持外,还增加画布功能。 还有一点更值得期待,就是Ext的RAD开发工具也在开发当中。估计在不久之后,也可以向VB,C#一样,通过可视化工具拖拽方式即可轻松开发Web应用。 ExtJs在发展过程中不仅一步步地巩固着自己在HTML、CSS、JavaScript领域无可比拟的优势,而且已经开始向相关领域发展扩张。如从2.02版开始为Adobe的RIA技术AIR提供支持,并且为GWT开发了Ext GWT2.0,这些都体现了ExtJs的强大活力和生命力。 在可预见的未来,ExtJs将会甩开对手,大踏步向前。 ExtJs的前景: ExtJS的前景是非常好的,现在的QQ2009的登录界面以及使用,迅雷最新版的主界面,都能够找到这个框架的踪迹。web QQ也是有一个技术版本是使用这种框架的,所以,可以看出,extjs的应用,是越来越广泛了,extjs的前景,不可估量,不论站在技术开发的层次还是大部分用户的使用体验。 国讯教育通用智能OA办公系统项目培训目标 本系列讲座分为四大部分: 1、ExtJs基础篇:主要介绍Ext Core的一些核心功能 2、ExtJs进阶篇:主要介绍ExtJs里的常用组件,容器及布局 3、ExtJs数据篇:主要介绍和数据库交互的相关组件及CRUD功能 4、项目实战篇: Extjs3.2+ASP.NET七层架构+设计模式+ log4j+WebSerice等技术国讯教育通用智能OA办公平台 适用对象 1、要求有一定的javascript语言和HTML,CSS基础的学员 2、有一定的Asp.net网页编程基础和C#语言基础 3、有志于从事富客户端技术ExtJs的学习与研究的学生及专业Web开发人员 模块介绍 1、ExtJs基础篇-ExtJs快速入门 1.1、ExtJs基础篇(1):ExtJs概述与环境配置及架构剖析 1.2、ExtJs基础篇(2):ExtJs OOP基础 1.3、ExtJs基础篇(3):ExtJs 核心函数简介 1.4、ExtJs基础篇(4):ExtJs中的模板详解(1) 1.5、ExtJs基础篇(5):ExtJs中的模板详解(22、ExtJs进阶篇:Extjs进阶 2.1、大话ExtJs中的布局 2.2、ExtJs的常见组件 2.3、ExtJs中的面板及Window窗口 2.4、ExtJs中的选项卡面板 2.5、ExtJs中的对话框与Combox组件 2.6、ExtJs中的ExtTree详解 3、ExtJs数据篇 3.1、数据存储基本单元Record与DataField详解 3.2、数据存储Store详解1 3.3、数据存储Store详解2 3.4、数据代理DataProxy详解 3.5、数据读取器DataReader详解 3.6、Ext.Direct详解1 3.7、Ext.Direct详解2 4、ExtJs实战篇—国讯教育通用智能OA办公平台 (共70) 4.1、系统业务流程主功能结构分析 4.2、数据库设计 4.3、抽象工厂+反射七层架构设计 4.4、首页布局设计 4.5、人事管理模块分析设计 4.6、个人专区模块分析设计 4.7、日程管理区模块分析设计 4.8、文档管理模块分析设计 4.9、工单管理模块分析设计 4.10、工资管理模块分析设计 4.11、内部邮箱模块分析设计 4.12、系统管理模块分析设计 4.13、考勤管理模块分析设计 4.14、消息管理模块分析设计 4.15日志管理 4.16、报表打印及数据统计 4.17、数据导入导出管理 本项目所涉及到的技术: 数据库方面: 1、PD数据库建模 2、SQL Server2005视图、存储过程、用户自定义函数、触发器 ASP.net方面: 1、ASP.net PetShop七层架构 2、抽象工厂+反射+配置文件实现数据库无缝切换 3、序列化/反序列化+泛型集合的应用 4、利用ASP.net HttpHandler实现防盗链 5、网站安全性方面:ASP.net防SQL注入及Web Service Soap头加密技术 6、AS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值