在配置文件中按包名或类名来定义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. EZOJ 网同14(蛋蛋与北大信科-Splay的颜色分离,寻找结点所在子树)

    蛋蛋与北大信科 总时限 10s 内存限制 256MB 出题人 lydrainbowcat 提交情况 1/25 背景 琰琰(孩纸们读作:蛋蛋)是妙峰书苑的一名萌萌哒教师,她的夫君(孩纸们称之为:北大信科 ...

  2. 真的了解js生成随机数吗

    由js生成一切随机数的基础都是Math.random()这个方法,这个方法比较特别,生成的随机数落在的区间是[0,1),进行一次操作的话,js只能生成一个类似于[n,m)这样,左闭右开的区间.所以当有 ...

  3. 用vue实现简单实时汇率计算功能

    最近在自己摸索vue的使用,因为相对于只是去看教程和实例,感觉不如自己动手写一个demo入门来的快.刚好看到小程序中有一个简单但是很精致的应用极简汇率,而且它的表现形式和vue的表现形式很像,于是想着 ...

  4. 分享php工作中遇到的一些探究和技巧【2】

    1 如何定义linux和window通用的文件分隔符号 DIRECTORY_SEPARATOR :  目录分隔符,是定义php的内置常量.在调试机器上,在windows我们习惯性的使用"\& ...

  5. 关于ul和dl的区别

    1.ul是无序列表,也就是说没有排列限制可以随意加li:<ul><li>可以随意放置</li><li>可以随意放置</li><li&g ...

  6. linux面试题集锦3《转》

    三.简答题: 1.简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程. 参考答案: Linux通过i节点表将文件的逻辑结构和物理结构进行转换. i节点是一个64字节长的表,表中包 ...

  7. PWA - 渐进式网络应用初认识

    Progressive Web Apps 简称PWA,是一种接近原生用户体验的渐进增强的web-app.从浏览器演进而来,沉浸式的体验,改进web的性能低下等.是Google 在2015年提出,今年才 ...

  8. js判断获取浏览器关闭状态

    如题,js获取浏览器关闭状态,可实现判断选择是否关闭. <html> <head> <title> </title> </head> < ...

  9. Android学习笔记(二)Git和Github

    一.添加SSH Key ssh-keygen -t rsa -C "email@example.com" 遇到提示只需要一直确认.用户目录(如/root)下会生成一个.ssh文件夹 ...

  10. Object转换为字符并去空格

    <div id="txt" style="display:none">1."不积跬步,无以至千里"的古语说明( A ) A.没有 ...