在配置文件中按包名或类名来定义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. Source Insight使用小技巧小结

    Source Insight是一款强大的代码查看工具,本身支持扩展性很好.下面我们就介绍2个扩展用例. 1.快速打开当前文件所在的目录,这个功能类似于eclipse的easyshell插件,就是能快速 ...

  2. Android的状态栏通知(Notification)

    通知用于在状态栏显示消息,消息到来时以图标方式表示,如下: 如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息. 1.Layout布局文件: <RelativeLayout xmlns:an ...

  3. 深入Java虚拟机:JVM中的Stack和Heap

    在JVM中,内存分为两个部分,Stack(栈)和Heap(堆),这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和静态属性的问题. 一般,JVM的 ...

  4. Java 实现下载

    效果就是点击就可以下载到本机. 前台代码示例 后台代码示例 前台代码示例 <a target='_self' href='../downTask/downloadFileToLocal?file ...

  5. windows环境下解决web服务假死的问题

    最近在windows系统在部署web服务器,发现很不稳定.web服务有容易假死,改过配置换过各种web软件,如apache.nginx都不管用. 所以干脆做个简易的定时检测Web服务状态的软件.一旦w ...

  6. Python json解析

    #encoding: utf-8 ''' Author:Siukwan ''' import sys reload(sys) sys.setdefaultencoding('utf8') import ...

  7. Python2 基于urllib2 的HTTP请求类

    一个利用urllib2模块编写的下载器,虽然有了requests模块,但是毕竟标准库 import urllib2,random class strong_down(): def __init__(s ...

  8. Maven之(七)pom.xml配置文件详解

    setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件:而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和li ...

  9. JTable,TableModel,DefaultTableModel与AbstractTableModel的小结

    1 表格JTable并不存储自己的数据,而是从表格模型那里获取它的数据 2 TableModel本身是一个interface,在这个interface里面定义了若干的方法,包括了存取表格字段(cell ...

  10. ECMAScript6之String类型的扩展

    String类型的扩展 模板字符串 模板字符串是字符串的增强版,既可以当做普通的字符串使用,也可以在字符串中嵌入变量,它用反引号`来表示. //普通字符串 `In javascript '\n' is ...