• 转 用log4.net记录日志


    原文地址:http://hi.baidu.com/huaiwen/blog/item/4de29e22efa10c42ad34dedd.html

     

    1.log4net.rar (首先下载合适的log4net.dll,此处用的.net frame1.1)

    2.添加引用.引入log4net.dll

    3.编写类 LogUtil,(为了方便复用而独立建一个日志记录类,该类有静态方法Log进行日志记录,且有一个私有的,只读的静态变量log4net.ILog bizLog)

    using System;

    namespace Test.Log
    {
        
    /// <author>9421</author>
        
    /// <date>2010-01-07</date>
        
    /// <summary>
        
    /// 日志记录类
        
    /// </summary>
        public class LogUtil
        {
            
    /// <summary>
            
    /// business log
            
    /// 通过"BusinessLogger"从web.config中读取bizLog的信息
            
    /// </summary>
            private static readonly log4net.ILog bizLog = log4net.LogManager.GetLogger("BusinessLogger");

            
    /// <summary>
            
    /// log an information message.
            
    /// </summary>
            
    /// <param name="message">message to be logged</param>
            public static void Log(string message)
            {
                
    try
                {
                    
    if (!bizLog.IsInfoEnabled)
                    {
                        
    //若不可用,重新配置
                        log4net.Config.XmlConfigurator.Configure();
                    }
                    bizLog.Info(message);
                    
    /* 可根据不同情况,调用不同的方法进行记录
                    bizLog.Debug(message);
                    bizLog.Error(message);
                    bizLog.Fatal(message);
                     
    */
                }
                
    catch (Exception ex)
                {
                    ex.GetType();
                }
            }
        }
    }

    4.在web.config中配置LogUtil类中log4net.ILog的相关信息:

    <configSections>
        
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      
    </configSections>

      
    <log4net debug="true">
        
    <appender name="BusinessRollingFile" type="log4net.Appender.RollingFileAppender,log4net">
          
    <file value="log/BusinessLog"/>
          
    <appendToFile value="true"/>
          
    <datePattern value="yyyyMMdd&quot;.log&quot;"/>
          
    <StaticLogFileName value="false"/>
          
    <maxSizeRollBackups value="100"/>
          
    <rollingStyle value="Date"/>
          
    <encoding value="UTF-8"/>
          
    <layout type="log4net.Layout.PatternLayout">
            
    <conversionPattern value="%-30d{yyyy/MM/dd HH:mm:ss} %m %n"/>
          
    </layout>
        
    </appender>

        
    <logger name="BusinessLogger">
          
    <level value="INFO"/>
          
    <appender-ref ref="BusinessRollingFile"/>
        
    </logger>
      
    </log4net>

    ps:<1>.logger 的name 为BusinessLogger,也即在LogUtil中使用GetLogger("BusinessLogger")所获得的logger信息;--可扩展为多个logger配置信息,根据业务项目需要,通过不同的name获得所需的logger

        <2>. logger的appender是记录的方式.此处为type="log4net.Appender.RollingFileAppender,log4net" 代回滚的文件输出格式

        <3>.logger的level属性定义不同级别,七种日志级别:debug,info,warn,error,fatal,all,off..此处为info

        <4>.appender的属性: file 对应日志文件的名称(此处包含路径,没有则新建),StaticLogFileName  是否为固定的文件名(此处为false不固定),在文件名不固定的前提下,设置<appendToFile value="true"/>      <datePattern value="yyyyMMdd&quot;.log&quot;"/>
    将根据日期,为日志文件定义不同的文件名(如此处为类似BussinessLog20091201.log,BussinessLog20091202.log的文件名

    5..在需要的地方调用即可

    LogUtil.Log("信息:9421登陆成功");
     

    引用::参考::

    log4的使用方法:

    log4是具有日志记录功能,主要通过一个配置文件来对程序进行监测
    有两种配置方式:一种程序配置,一种文件配置
    有三个主要单元要了解,Logger,appender,layout.

    logger是进行记录的主要类,appender是记录的方式,layout是记录的格式
    logger七种日志级别:debug,info,warn,error,fatal,all,off
    最常用的应该是debug()和info();而warn()、error()、fatal()仅在相应事件发生后才使用

    appender主要分三类,终端输出,文件输出,流输出
    ConsoleAppender
    FileAppender
    WriterAppender

    layout也分三类:简单格式,html格式,匹配格式
    SimpleLayout
    HTMLLayout
    PatternLayout

    输出简写:(用在PatternLayout)
    %m 输出代码中指定的消息
    %p 输出优先级
    %r 输出自应用启动到输出该log信息耗费的毫秒数
    %c 输出所属的类目,通常就是所在类的全名
    %t 输出产生该日志事件的线程名
    %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
    %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。一般使用了它就不需使用%c了


    作用实例:
    程序配置一般过程:
    1.得到特定名称的logger
    2.得到其中一个layout
    3.根据layout得到appender
    4.logger添加appender
    5.logger设置级别
    6.logger输出有级别的日志信息

    程序:
    Logger logger = Logger.getLogger(Test.class.getName())      //取得logger
    SimpleLayout simpleLayut = new SimpleLayout()               //取得layout
    FileAppender fa = new FileAppender(simpleLayout,"test.log") //取得appender
    logger.addAppender(fa)                                      //添加appender
    logger.set((Level)Level.DEBUG)                              //设置级别
    logger.debug("hihihihih")                                   //记录信息


    文件配置过程:
    1.得到特定名称的logger
    2.加载配置文件       (配置文件做了2-5的工作)
    3.logger输出有级别的日志信息

    文件配置程序:
    1.Logger logger = Logger.getLogger(Test.class.getName())      //取得logger
    2.使用下面的配置加载
    3.输出信息


    文件配置分properties,xml
    读取properties:
    PropertyConfigurator.configure("logTest.properties");

    读取xml:
    DOMConfigurator.configure("src/logTest.xml");

    ---------------------------

    一、常用输出格式

    %c   列出logger名字空间的全称,如加上{<层数>}表示出从最内层算起的指定层数的名字空间
    %X 按MDC(Mapped Diagnostic Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。
    %p 日志信息级别
    %d   %d{<日期格式>}:日志信息产生时间,使用ISO8601定义的日期格式
    %C   日志信息所在地(全限类名)
    %m   产生的日志具体信息
    %n    输出日志信息换行
    %F 显示调用logger的源文件名
    %l     输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
    %L    显示调用logger的代码行
    %M   显示调用logger的方法名
    %r     显示从程序启动时到记录该条日志时已经经过的毫秒数
    %t     输出产生该日志事件的线程名
    %% 显示一个
    二、log4j.properties

    #控制包中日志输出级别
    log4j.logger.org.apache.struts = debug

    # 应用于控制台
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.Threshold=DEBUG
    log4j.appender.CONSOLE.Target=System.out
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n
    #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

    #应用于文件
    log4j.appender.FILE=org.apache.log4j.FileAppender
    log4j.appender.FILE.File=file.log
    log4j.appender.FILE.Append=false
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n
    # Use this layout for LogFactor 5 analysis

    # 应用于文件回滚
    log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.ROLLING_FILE.Threshold=ERROR
    log4j.appender.ROLLING_FILE.File=rolling.log
    log4j.appender.ROLLING_FILE.Append=true
    log4j.appender.ROLLING_FILE.MaxFileSize=100KB
    log4j.appender.ROLLING_FILE.MaxBackupIndex=10
    log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n


    #应用于socket
    log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender
    log4j.appender.SOCKET.RemoteHost=localhost
    log4j.appender.SOCKET.Port=5001
    log4j.appender.SOCKET.LocationInfo=true
    # Set up for Log Facter 5
    log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
    log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n


    # Log Factor 5 Appender
    log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
    log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

    # 发送日志给邮件
    log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
    log4j.appender.MAIL.Threshold=FATAL
    log4j.appender.MAIL.BufferSize=10
    log4j.appender.MAIL.From=web@www.wuset.com
    log4j.appender.MAIL.SMTPHost=www.wusetu.com
    log4j.appender.MAIL.Subject=Log4J Message
    log4j.appender.MAIL.To=web@www.wusetu.com
    log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
    log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n

    # 用于数据库
    log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
    log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
    log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
    log4j.appender.DATABASE.user=root
    log4j.appender.DATABASE.password=
    log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %-4r [%t] %-5p %c %x - %m%n')
    log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
    log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n

    #每日回滚日志文件
    log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A1.File=SampleMessages.log4j
    log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
    log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

    #自定义Appender
    log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
    log4j.appender.im.host = mail.cybercorlin.net
    log4j.appender.im.username = username
    log4j.appender.im.password = password
    log4j.appender.im.recipient = corlin@cybercorlin.net
    log4j.appender.im.layout=org.apache.log4j.PatternLayout
    log4j.appender.im.layout.ConversionPattern =[framework] %d - %-4r [%t] %-5p %c %x - %m%n

     

  • 相关阅读:
    使用Project Linker 2012实现多个项目中代码文件
    使用的开放源码Scryber库动态生成PDF文件
    破解Excel 密码保护
    入围51CTO 2009年度“最受读者欢迎的IT图书作者”评选
    谈谈分布式事务之二:基于DTC的分布式事务管理模型[下篇]
    WCF 技术剖析之三十三:你是否了解WCF事务框架体系内部的工作机制?[下篇]
    事件(Event),绝大多数内存泄漏(Memory Leak)的元凶[下篇] (提供Source Code下载)
    如何实现对上下文(Context)数据的统一管理 [提供源代码下载]
    WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于HTTPGET的实现](提供模拟程序)
    Enterprise Library深入解析与灵活应用(9):个人觉得比较严重的关于CachingCallHandler的Bug
  • 原文地址:https://www.cnblogs.com/9421/p/1645430.html
Copyright © 2020-2023  润新知