在配置文件中按包名或类名来定义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指定的文件中

log4j配置示例的更多相关文章

  1. 简要log4j配置

    若排版紊乱可查看我的个人博客原文地址 1. 配置效果 下面的log4j日志配置最终能达到的效果是对于全局日志可以根据级别输入到对应级别的日志文件中,注意低级别的日志文件会同时包含高级别的日志信息,例如 ...

  2. 使用log4j配置不同文件输出不同内容

    敲代码中很不注意写日志,虽然明白很重要.今天碰到记录日志,需要根据内容分别输出到不同的文件. 参考几篇文章: 感觉最详细:http://blog.csdn.net/azheng270/article/ ...

  3. java日志规约及配置示例终极总结

    目录 什么是日志 常用日志框架 日志级别详解 日志的记录时机 日志使用规约 logback 配置示例 loh4j2 配置示例 什么是日志? 简单的说,日志就是记录程序的运行轨迹,方便查找关键信息,也方 ...

  4. 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库

    作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583] ...

  5. spring boot 日志介绍 以及 logback配置示例

    https://www.cnblogs.com/flying607/p/7827460.html 以下是springboot的一个局部依赖关系: 可以看到,java util logging(jul) ...

  6. Nginx 简单的负载均衡配置示例(转载)

    原文地址:Nginx 简单的负载均衡配置示例(转载) 作者:水中游于 www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服务器IP. 用户访问http://www ...

  7. log4j 配置

    给java项目添加log4j日志: 1.下载log4j jar包,放入lib目录, 导入项目中 2.创建log4j.properties 文件  目录 Src 3.在需要使用输出的类中使用 priva ...

  8. log4j配置日志文件log4j.appender.R.File相对路径方法

    方法一. 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs ...

  9. paip.Log4j配置不起作用的解决

    paip.Log4j配置不起作用的解决 1.jar包里的log4j配置 看累挂jar,真的有个" webservices-rt.jar\com\sun\org\apache\xml\inte ...

随机推荐

  1. 12157 - Tariff Plan

      Ampang Communications & Mobile (ACM) provides telecom services for various types of users. Sin ...

  2. [APUE]进程控制(中)

    一.wait和waitpid函数 当一个进程正常或异常终止时会向父进程发送SIGCHLD信号.对于这种信号系统默认会忽略.调用wait/waidpid的进程可能会: 阻塞(如果其子进程都还在运行); ...

  3. Js 使用new关键字调用函数和直接调用函数的区别

    最近开始学习js,在看到书上的一个例子时,引发了我的一系列思考: 书上例子: function Person(name,age,job){ var o =new Object(); o.name=na ...

  4. KendoUI 用下来的小总结

    Kendoui Aspnetmvc * 引用jquery.1.10以上 * 1.项目引用 Kendo.Mvc.dll 2.页面引用 @using Kendo.Mvc.UI; 3.Name和 HtmlA ...

  5. sublime3下载安装及常用插件

    之前与学习前端有关的软件都安装在了实验室电脑上,最近由于要放寒假(也许我寒假回去会学习呢),于是得在笔记本电脑上重新安装一遍.几个软件各种出错,花了一下午才安装好,必须记录下来啊! 这篇文章主要介绍s ...

  6. js导出execl兼容ie Chrome Firefox各种主流浏览器(js export execl)

    第一种导出table布局的表格 <html> <head> <meta charset="utf-8"> <script type=&qu ...

  7. CentOS 7安装SVN以及高版本SVN

    安装 CentOS 7 下yum命令即可方便的完成安装 $ sudo yum install subversion 测试安装是否成功: $ svnserve --version 建立版本库 创建svn ...

  8. usaco月赛,2017.1总结

    T1:跳舞的奶牛 大致题意:一个体积为k的舞台能够同时容纳k只奶牛一起跳舞,他们每头奶牛的跳舞时间不同,如果有一只奶牛跳完了第k+1头奶牛就会立刻上场跳舞,当所有奶牛跳完舞以后我们认为这次表演结束.现 ...

  9. Shell 脚本计算时间差

    在shell脚本中统计程序执行完毕所需要的时间不像在java中使用System.currentTimeMillis()方便 稍微记录一下,以供备用,免得又去花时间想(统计程序执行消耗多少s): sta ...

  10. Java动态解压zip压缩包

    import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; impo ...