zoukankan      html  css  js  c++  java
  • log4j配置示例

    在配置文件中按包名或类名来定义Logger
    在程序中按类名取Logger

    定义:
    log4j.rootLogger=debug,stdout
    log4j.logger.com.mypkg=debug,mypkg
    log4j.logger.com.mypkg.db=info,db
    log4j.logger.com.mypkg.mail=debug,mail

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5r [%5p][%c{2}] %m%n

    log4j.appender.mypkg=org.apache.log4j.RollingFileAppender
    log4j.appender.mypkg.File=system.log
    log4j.appender.mypkg.Append=true
    log4j.appender.mypkg.MaxFileSize=1MB
    log4j.appender.mypkg.MaxBackupIndex=1
    log4j.appender.mypkg.layout=org.apache.log4j.PatternLayout
    log4j.appender.mypkg.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

    log4j.appender.db=org.apache.log4j.FileAppender
    log4j.appender.db.File=db.log
    log4j.appender.db.Append=true
    log4j.appender.db.layout=org.apache.log4j.PatternLayout
    log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

    log4j.appender.mail=org.apache.log4j.FileAppender
    log4j.appender.mail.File=mail.log
    log4j.appender.mail.Append=true
    log4j.appender.mail.layout=org.apache.log4j.PatternLayout
    log4j.appender.mail.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

    log4j.additivity.com.mypkg=false
    log4j.additivity.com.mypkg.db=false
    log4j.additivity.com.mypkg.mail=false

    使用:
    package com.mypkg;
    public class Class1
    {
        private static Logger logger = Logger.getLogger(Class1.class);

        ...
        if(logger.isDebugEnabled())
            logger.debug("debug info");
        ...
    }

    package com.mypkg.db;
    public class Class2
    {
        private static Logger logger = Logger.getLogger(Class2.class);

        ...
        if(logger.isDebugEnabled())
            logger.debug("debug info");
        ...
    }

    package com.mypkg.mail;
    public class Class3
    {
        private static Logger logger = Logger.getLogger(Class3.class);

        ...
        if(logger.isDebugEnabled())
            logger.debug("debug info");
        ...
    }

    这样一来:
      com.mypkg.mail下的类(Class3)的日志就会记入mail.log
      com.mypkg.db下的类(Class2)的日志就会记入db.log
      com.mypkg下的类(Class1)及类似com.mypkg.pkg1这样的未定义相应Logger的包下的类(com.mypkg.pkg1.Class4)的日志就会记入system.log
      com.mypkg以外的类(com.pkg1.Class5)的日志就会记录到rootLogger,即输出到控制台

    不管增加还是删除日志配置项,都不需要修改程序:
        如果想去掉其中一个,如mail,只需从配置文件中去掉"log4j.logger.com.mypkg.mail=info,mail"这一行,去掉后com.mypkg.mail包下的类(如Class3)的日志就会记入system.log中。

        如果要新增Logger,如com.mypkg.pkg2,只需在配置文件中增加类似配置,com.mypkg.pkg2包下的类的日志就会记入新增的log文件,而不再记入system.log文件。

    还可以为指定类配置一个logger,如为类com.mypkg.db.ConnectionPool配置一个logger:
      log4j.logger.com.mypkg.db.ConnectionPool=debug,pool

      log4j.appender.pool=org.apache.log4j.FileAppender
      log4j.appender.pool.File=pool.log
      log4j.appender.pool.Append=true
      log4j.appender.pool.layout=org.apache.log4j.PatternLayout
      log4j.appender.pool.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

      log4j.additivity.com.mypkg.db.ConnectionPool=false

    这样一来,ConnectionPool类的日志就会记入pool.log,不会记入db.log

    还可以两个Logger使用同一个appender:
      log4j.logger.com.pkg1=debug,system
      log4j.logger.com.pkg2=info,system
    这样的话com.pkg1和com.pkg2下的日志会分别以degug和info级别输出到system这个appender指定的文件中

  • 相关阅读:
    小记:利用递归调用循环寻找MP3文件的方法。
    模拟QQ侧滑控件 实现三种界面切换效果(知识点:回调机制,解析网络json数据,fragment用法等)。
    解析网络json数据,模拟美团界面显示。
    解析Json的谷歌官方方法Gson和阿里巴巴的fastJson方法。
    Json文件放入Assets文件,读取解析并且放入listview中显示。
    Android Fragment完全解析,关于碎片你所需知道的一切 (转)。
    安卓Json介绍(转)。
    Java中a+=b和a=a+b的区别
    线程安全的单例模式
    java中伪共享问题
  • 原文地址:https://www.cnblogs.com/fibonaccixue/p/6172021.html
Copyright © 2011-2022 走看看