java中配置log4j写日志

来源:互联网 发布:排序算法的时间复杂度 编辑:程序博客网 时间:2024/05/08 05:07

一、Log4j配置
1    在程序中导入jar:log4j-1.2.15.jar
2    在CLASSPATH下建立log4j.properties(放在根目录下的话就不用配置,否则得去web.xml里面配置一个Listener),内容如下:

log4j.rootLogger=INFO,CONSOLE,FileServer

#console

log4j.appender.Threshold=INFO

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.Target=System.out

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

log4j.appender.CONSOLE.layout.ConversionPattern=%d - %c -%-4r [%t] %-5p %x - %m%n

# FileServer

log4j.appender.FileServer=org.apache.log4j.DailyRollingFileAppender

log4j.appender.FileServer.file=D:/fileServerLog/fileServer_

log4j.appender.FileServer.DatePattern=yyyyMMdd'.log'

log4j.appender.FileServer.layout=org.apache.log4j.PatternLayout

log4j.appender.FileServer.layout.ConversionPattern=/n/n[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

3    日志基类代码:

public class Log {/** * 输出debug日志信息 * @param info */public static void debug(String info){Logger logger = Logger.getLogger("fileserver");logger.info(info);PropertyConfigurator.configure("log4j.properties");}/** * 输出debug日志信息 * @param cl * @param info */public static void debug(Class cl,String info){Logger logger = Logger.getLogger(cl);logger.info(info);PropertyConfigurator.configure("log4j.properties");}/** * 输出error日志信息,包括异常堆栈信息 * @param e */public static void error(Exception e){Logger logger = Logger.getLogger("fileserver");String info = e.getMessage() + "\n";logger.info(info);logger.info(getStackTrace(e));PropertyConfigurator.configure("log4j.properties");}/** * 输出error日志信息,包括异常堆栈信息 * @param cl * @param e */public static void error(Class cl,Exception e){Logger logger = Logger.getLogger(cl);String info = e.getMessage() + "\n";logger.info(info);logger.info(getStackTrace(e));PropertyConfigurator.configure("log4j.properties");}/**     * 将异常堆栈转换为字符串     * @param aThrowable 异常     * @return String     */    public static String getStackTrace(Throwable aThrowable) {        final Writer result = new StringWriter();        final PrintWriter printWriter = new PrintWriter(result);        aThrowable.printStackTrace(printWriter);        return result.toString();      }}


注意:当天生成的日志文件名为fileServer_,到第二天该日志文件名会自己改成fileServer_20150722.log


二、Log4j说明

1      og4j.rootCategory=INFO, stdout , FileServer

此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名。等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示,具体讲解可参照第三部分定义配置文件中的logger。

2       日志输出级别,这些级别可以分别定义,也可以自己设置。

log4j.rootLogger=info,stdout,info,debug,errorlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n log4j.logger.info=infolog4j.appender.info=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.info.layout=org.apache.log4j.PatternLayoutlog4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%nlog4j.appender.info.datePattern='.'yyyy-MM-ddlog4j.appender.info.Threshold = INFO log4j.appender.info.append=truelog4j.appender.info.File=${webApp.root}/WEB-INF/logs/info.log log4j.logger.debug=debuglog4j.appender.debug=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.debug.layout=org.apache.log4j.PatternLayoutlog4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%nlog4j.appender.debug.datePattern='.'yyyy-MM-ddlog4j.appender.debug.Threshold = DEBUG log4j.appender.debug.append=truelog4j.appender.debug.File=${webApp.root}/WEB-INF/logs/debug.loglog4j.logger.error=errorlog4j.appender.error=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.error.layout=org.apache.log4j.PatternLayoutlog4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%nlog4j.appender.error.datePattern='.'yyyy-MM-ddlog4j.appender.error.Threshold = ERROR log4j.appender.error.append=truelog4j.appender.error.File=${webApp.root}/WEB-INF/logs/error.log 


3       log4j.appender.stdout=org.apache.log4j.ConsoleAppender

此句为定义名为stdout的输出端是哪种类型,可以是
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
具体讲解可参照第三部分定义配置文件中的Appender。

4       log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
此句为定义名为stdout的输出端的layout是哪种类型,可以是
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
具体讲解可参照第三部分定义配置文件中的Layout。

5       log4j.appender.stdout.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n
如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
[QC]是log信息的开头,可以为任意字符,一般为项目简称。


输出的信息

[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'
具体讲解可参照第三部分定义配置文件中的格式化日志信息。

7       log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
此句与第3行一样。定义名为R的输出端的类型为每天产生一个日志文件。

8       log4j.appender.R.File=D:\\Tomcat 5.5\\logs\\qc.log

此句为定义名为R的输出端的文件名为D:\\Tomcat 5.5\\logs\\qc.log可以自行修改。
9       log4j.appender.R.layout=org.apache.log4j.PatternLayout
与第4行相同。
10     log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
与第5行相同。
12     log4j.logger.com. neusoft =DEBUG
指定com.neusoft包下的所有类的等级为DEBUG。
可以把com.neusoft改为自己项目所用的包名。
13     log4j.logger.com.opensymphony.oscache=ERROR
14     log4j.logger.net.sf.navigator=ERROR
这两句是把这两个包下出现的错误的等级设为ERROR,如果项目中没有配置EHCache,则不需要这两句。
15     log4j.logger.org.apache.commons=ERROR
16     log4j.logger.org.apache.struts=WARN
这两句是struts的包。
17     log4j.logger.org.displaytag=ERROR
这句是displaytag的包。(QC问题列表页面所用)
18     log4j.logger.org.springframework=DEBUG
此句为Spring的包。
19     log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN

25     log4j.logger.org.hibernate=DEBUG


此两句是hibernate的包。


以上这些包的设置可根据项目的实际情况而自行定制。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝买的东西收不到货怎么办 资料如实填了 怎么办不下来借款啊 如果淘宝店家跑了没收到货怎么办 淘宝店家退完款把货又发了怎么办 淘宝收到货有问题客服不回复怎么办 手机从美国寄回中国被海关扣怎么办 摩托车新买的后悔了想卖怎么办? 淘宝单号输错了怎么办运费险 在淘宝卖东西快递单号输错了怎么办 淘宝买东西签收后发现坏了怎么办 摩托车购车发票写了别人名字怎么办 新领的发票跟电脑对不上号怎么办 淘宝未发货退款卖家拒绝怎么办 在超市买东西把票丢了不让出怎么办 在淘宝上买东西付款不发货怎么办 买家拍下商品卖家拒绝发货怎么办 没有中文标签被投诉到工商局怎么办 淘宝申请退款卖家强制发货怎么办 1688卖家交易不小心关闭怎么办 拼多多两天不发货怎么办自动退款吗 在家里放的东西找不到了怎么办 在家里烧东西烟太大了怎么办 转转上买的二手东西有问题怎么办? 大巴车过虎门大桥错走小车道怎么办 pe高压膜中间松两边紧怎么办? 穿着浅口的高跟鞋走路老是掉怎么办 五吧同城模特兼职被骗了怎么办 华为手机充电玩黑屏怎么办教学视频 衣服肩膀被衣架撑变形了怎么办 货已经安到客户家客户不付款怎么办 微商卖家不给退货不给换货怎么办啊 淘宝卖家已签收退货却不退款怎么办 申请换货卖家收到货不给换怎么办 我买了个机器想退货怎么办 卖家要求退回去又拒收怎么办 拼多多48小时还不发货怎么办 退货退款单号填错了退不了款怎么办 淘宝退货退款快递单号填写错怎么办 蘑菇街退货忘记填快递单号了怎么办 您尝试购买的项目已停止供货怎么办 oppo新手机搬家搬了一半怎么办