zoukankan      html  css  js  c++  java
  • Commons-logging + Log4j

    一、Commons-logging能帮我们做什么?

    1、提供一个统一的日志接口,简单了操作,同时避免项目与某个日志实现系统紧密耦合

    2、自动选择适当的日志实现系统

      a.classpath下查找commons-logging.properties

      b.classpath下查找Log4j的包

      c.使用JDK自身的日志实现类(注:JDK1.4以后才有日志实现类)

      d.使用commons-logging自身日志实现类SimpleLog

    3、它甚至不需要配置

    Commons-logging的Java类的代码:

    package com.nadim.framework.monitor;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    
    public class Run {
        private static final Log log = LogFactory.getLog(Run.class);
        public static void main(String[] args) {
            //输出4种不同级别的日志
            log.debug("111");
            log.info("222");
            log.warn("333");
            log.error("444");
        }
    }

      jar包地址:http://commons.apache.org/proper/commons-logging/download_logging.cgi

    单独使用Log4j的Java类的代码:

    package com.nadim.framework.monitor;
    
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    
    public class Run {
        static Logger logger = Logger.getLogger(TestLog4j.class); // First step
    
        public static void main(String[] args) {
            PropertyConfigurator.configure("log4j.properties");
            
            logger.debug("Here is some DEBUG");
            logger.info("Here is some INFO");
            logger.warn("Here is some WARN");
            logger.error("Here is some ERROR");
            logger.fatal("Here is some FATAL");
    
        }
    }

     jar包地址:http://logging.apache.org/log4j/1.2/download.html

    Commons-logging + Log4j的Java类的代码:

    Java 代码同 Commons-logging的Java类的代码

    commons-logging.properties 添加实现

    org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

     

    二、log4j.properties的一点介绍

      除去以#开头的注释以及空行,第一行有用的内容是:  log4j.rootLogger = DEBUG, CONSOLE,A1

      1、log4j.rootLogger是最最重要的一个属性了,它定义日志信息的“输出级别”和“输出目的地”。

      2、第一个逗号之前的是“输出级别”;后面为“输出目的地”。可以同时指定多个“输出目的地”,以逗号隔开。

        输出级别:DEBUG、INFO、WARN、ERROR、FATAL ,它们是由Log4j系统定义的。

        输出目的地是自己定义的: 

            # 应用于控制台    
           

     1 ### set log levels ###
     2 log4j.rootLogger = debug,stdout,D,E
     3 
     4 ### 输出到控制台 ###
     5 log4j.appender.stdout = org.apache.log4j.ConsoleAppender
     6 log4j.appender.stdout.Target = System.out
     7 ## 输出INFO级别以上的日志
     8 log4j.appender.stdout.Threshold = INFO
     9 log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    10 log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n
    11 
    12 ### 输出到日志文件 ###
    13 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
    14 log4j.appender.D.File = D:/logs/debug.log
    15 log4j.appender.D.Append = true
    16 ## 输出DEBUG级别以上的日志
    17 log4j.appender.D.Threshold = DEBUG
    18 log4j.appender.D.layout = org.apache.log4j.PatternLayout
    19 log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
    20 
    21 ### 保存异常信息到单独文件 ###
    22 log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    23 ## 异常日志文件名
    24 log4j.appender.E.File = D:/logs/error.log 
    25 log4j.appender.E.Append = true
    26  ## 只输出ERROR级别以上的日志!!!
    27 log4j.appender.E.Threshold = ERROR
    28 log4j.appender.E.layout = org.apache.log4j.PatternLayout
    29 log4j.appender.E.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c:(%F:%L) %n - %m%n
     1 ### send error through email.
     2 #log4j的邮件发送appender,如果有必要你可以写自己的appender
     3 log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
     4 #发送邮件的门槛,仅当等于或高于ERROR(比如FATAL)时,邮件才被发送
     5 log4j.appender.MAIL.Threshold=ERROR
     6 #缓存文件大小,日志达到10k时发送Email
     7 log4j.appender.MAIL.BufferSize=10
     8 #发送邮件的邮箱帐号
     9 log4j.appender.MAIL.From=xxx@163.com
    10 #SMTP邮件发送服务器地址
    11 log4j.appender.MAIL.SMTPHost=smtp.163.com
    12 #SMTP发送认证的帐号名
    13 log4j.appender.MAIL.SMTPUsername=xxx@163.com
    14 #SMTP发送认证帐号的密码
    15 log4j.appender.MAIL.SMTPPassword=xxx
    16 #是否打印调试信息,如果选true,则会输出和SMTP之间的握手等详细信息
    17 log4j.appender.MAIL.SMTPDebug=false
    18 #邮件主题
    19 log4j.appender.MAIL.Subject=Log4JErrorMessage
    20 #发送到什么邮箱,如果要发送给多个邮箱,则用逗号分隔;
    21 #如果需要发副本给某人,则加入下列行
    22 #log4j.appender.MAIL.Bcc=xxx@xxx.xxx
    23 log4j.appender.MAIL.To=xxx@xxx.com
    24 log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
    25 log4j.appender.MAIL.layout.ConversionPattern=[framework]%d - %c -%-4r[%t]%-5p %c %x -%m%n
    发送邮件

    发送邮件注:添加mail.jar activation.jar 两个jar邮件发送jar包

    myeclipse问题: java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

    解决方案:删除MyEclipse 6.5/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5/javaee.jar 里面的 mail.jar和activation.jar。

    1 log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
    2 log4j.appender.db.BufferSize=1
    3 log4j.appender.db.driver=com.ibm.db2.jcc.DB2Driver
    4 log4j.appender.db.URL=jdbc:db2://10.190.7.183:50000/FJDC2
    5 log4j.appender.db.user=db2inst1
    6 log4j.appender.db.password=db2admin
    7 log4j.appender.db.sql=insert into zyms.test (orderno, name) values (0,'%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c:(%F:%L) %n - %m%n')
    8 log4j.appender.db.layout=org.apache.log4j.PatternLayout
    输出到数据库

    输出到数据库注:添加数据库相关jar包

    1. 输出方式
    org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)
    org.apache.log4j.ConsoleAppender (控制台)
    org.apache.log4j.FileAppender (文件)
    org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
    org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

    2. 日记记录的优先级
    OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。
    Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。

    3. 格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):
    %c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)
    %d 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
    %l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
    %n 换行符
    %m 输出代码指定信息,如info(“message”),输出message
    %p 输出优先级,即 FATAL ,ERROR 等
    %r 输出从启动到显示该log信息所耗费的毫秒数
    %t 输出产生该日志事件的线程名

  • 相关阅读:
    vi
    head
    uniq
    sort
    所谓静态绑定
    债务
    不确
    tar
    VMWare虚拟系统上网设置 及 三种模式详解
    awk
  • 原文地址:https://www.cnblogs.com/Nadim/p/3450082.html
Copyright © 2011-2022 走看看