• 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指定的文件中

  • 相关阅读:
    关于python的类成员方法允许静态调用的机制
    一个pyqt5动态加载ui+多线程+信号刷新界面的例子
    一个经典的redis队列简单解决方案
    关于连表查询的执行计划
    electron nativefier打包网址 electron-winstaller制作安装包
    MySQL 8.0 字符串比较特殊案例小结
    MySQL SELECT_LEX与subselect 执行 源码阅读笔记
    MySQL 8.0 QueryResolver 源码笔记
    MySQL 8.0 Optimizer 源码笔记
    MySQL Item 源码阅读笔记
  • 原文地址:https://www.cnblogs.com/fibonaccixue/p/6172021.html
Copyright © 2020-2023  润新知