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指定的文件中
log4j配置示例的更多相关文章
- 简要log4j配置
若排版紊乱可查看我的个人博客原文地址 1. 配置效果 下面的log4j日志配置最终能达到的效果是对于全局日志可以根据级别输入到对应级别的日志文件中,注意低级别的日志文件会同时包含高级别的日志信息,例如 ...
- 使用log4j配置不同文件输出不同内容
敲代码中很不注意写日志,虽然明白很重要.今天碰到记录日志,需要根据内容分别输出到不同的文件. 参考几篇文章: 感觉最详细:http://blog.csdn.net/azheng270/article/ ...
- java日志规约及配置示例终极总结
目录 什么是日志 常用日志框架 日志级别详解 日志的记录时机 日志使用规约 logback 配置示例 loh4j2 配置示例 什么是日志? 简单的说,日志就是记录程序的运行轨迹,方便查找关键信息,也方 ...
- 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库
作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583] ...
- spring boot 日志介绍 以及 logback配置示例
https://www.cnblogs.com/flying607/p/7827460.html 以下是springboot的一个局部依赖关系: 可以看到,java util logging(jul) ...
- Nginx 简单的负载均衡配置示例(转载)
原文地址:Nginx 简单的负载均衡配置示例(转载) 作者:水中游于 www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服务器IP. 用户访问http://www ...
- log4j 配置
给java项目添加log4j日志: 1.下载log4j jar包,放入lib目录, 导入项目中 2.创建log4j.properties 文件 目录 Src 3.在需要使用输出的类中使用 priva ...
- log4j配置日志文件log4j.appender.R.File相对路径方法
方法一. 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs ...
- paip.Log4j配置不起作用的解决
paip.Log4j配置不起作用的解决 1.jar包里的log4j配置 看累挂jar,真的有个" webservices-rt.jar\com\sun\org\apache\xml\inte ...
随机推荐
- 通过VNC Viewer使用VMware虚拟机的远程桌面连接
本文转自:http://www.14blog.com/archives/185 要在VMware虚拟机中使用远程桌面连接?方法有两个:一种是在虚拟机中做“端口映射”,当然,这个稍显复杂(虚拟机端口映射 ...
- 纯Java代码 图片压缩
Java图片压缩代码 package com.img; import java.awt.Image; import java.awt.image.BufferedImage; import java. ...
- android fragment addToBackStack bug
In FragmentActivity.First, I add two fragment by FragmentTransaction. See the flowing code : /****** ...
- python 函数简介之三
1. 非固定个数的实参----参数组,* args ,其结果将以元组的形式呈现出来 def func(*args): print(args) func(1,2,3,4,5) #第一种调用方式, 多个实 ...
- CSS多列、用户界面属性
CSS多列 常用属性: column-count 分几列 column-gap 列间距 column-rule 列分割线的样式(写法和border一样) 例如: 一个div分三列,列之间间距为10px ...
- Windows设置VMware开机自动启动,虚拟机也启动
很多用windows系统电脑开发的童鞋,会在自己电脑上装一个虚拟机,然后在装一个linux系统当作服务器来使用.但每次电脑开机都要去重启一下虚拟机电源,实在是不划算.下面博主教大家在windows系统 ...
- websocket+前后端分离+https的nginx配置
后端服务路径: 172.168.0.2:8080 172.168.0.2:7080 前端目录(html + css + js): /root/apps/mzsg-web 1.修改 /etc/nginx ...
- trove datastore 浅析
以下代码来自trove/datastore该目录下一共有4个文件__init__,views,models,service大概关系(主要是wsgi吧,没仔细学过,简单的从代码上做推测),service ...
- svn 目录设置为 不提交 忽略
svn 忽略 以下文件 和目录 (不提交) runningtime --选中 tortoiseSVN --unversion and add to ignore list web workspace ...
- C# winform调用东软动态库的问题
在C# winform程序中调用东软的动态库ESActiveX.ocx 如果是引用ESActiveX.ocx,然后在代码中设置示例,调用就会报"灾难性错误" 如果在工具箱中点击右键 ...