在配置文件中按包名或类名来定义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. 关于ocx中遇到的坑

    前言 这还是第一次写博客,以前太懒了,现在发现是很有必要记录下这些经验和问题的.最近项目中有个需求(报表单据需要客户签名,连接签字板,把签名单据同步到服务器上),需要和硬件交互,当时硬件商提供了ocx ...

  2. DOM节点删除之empty和remove

    DOM节点删除之empty和remove 刚学了新知识,虽然是一个小知识点,但还是忍不住想和大家分享. .empty()是指对该节点后代的删除,结果是清空该节点(该节点里面已无元素). .remove ...

  3. Mvc分页组件MvcSimplePager代码重构

    1 Mvc分页组件MvcSimplePager代码重构 1.1 Intro 1.2 MvcSimplePager 代码优化 1.3 MvcSimplePager 使用 1.4 End Mvc分页组件M ...

  4. iOS中级篇 - dispatch_semaphore(信号量)的理解及使用

    理解这个概念之前,先抛出一个问题 问题描述: 假设现在系统有两个空闲资源可以被利用,但同一时间却有三个线程要进行访问,这种情况下,该如何处理呢? 没错,这里,我们就可以方便的利用信号量来解决这个问题. ...

  5. Java垃圾回收机制的工作原理

    Java垃圾回收机制的工作原理 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 获取更多内容,请关注小编个人微信公众平台: 一.Java中引入垃圾回收机制的作用 ...

  6. [ios2]ios系统中各种设置项的url链接

    在代码中调用如下代码:(ps: ios 5.0 以后不可用)NSURL*url=[NSURL URLWithString:@"prefs:root=WIFI"];[[UIAppli ...

  7. 009-程序集路径Web窗体

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs& ...

  8. [前端性能提升]--图片转化为base64

    图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址 意义:网页上的每一个图片,都是需要消耗一个 http 请求下载而来的(所有才有了 csssprites 技术 ...

  9. Intellij Idea + Maven + Git + Struts2 HelloWorld

    1.在intellij Idea上新建Maven项目,输入相应的groupId,artifactId,项目名称: 2.在项目的pom文件中,引入struts2的核心依赖struts2-core: &l ...

  10. Android抽屉效果 DrawerLayout 入门经验总结

    今天试了试这个抽屉布局的效果,结果很崩溃无语 网上很多资料都千篇一律,感觉都有问题,下面总结下几点经验: 先上个效果图: 1.  layout 布局文件中怎么写: <android.suppor ...