博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log4j.xml配置示例
阅读量:6822 次
发布时间:2019-06-26

本文共 4097 字,大约阅读时间需要 13 分钟。

这是log4j1.x版本讲解,log4j-1.2.16.jar   

 

1、 一般的log4j.xml的两种配置方式:

1、Logger 完成日志信息的处理

定义输出的层次和决定信息是否输出
DEBUG<INFO<WARN<ERROR
2、Appender 设置日志信息的去向
常用的:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppener(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志讯息以串流格式发送到任意指定的地方)
org.apache.log4j.JdbcAppender(将日志讯息保存到数据库中)
3、Layout 设置日志信息的输出样式
layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.SimpleLayout(包含日志讯息的级别和讯息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、执行绪、类别等讯息)
org.apache.log4j.PatterLayout(可以灵活地指定布局格式)
4、配置文件 log4j.xml

通过 ${catalina.base} 变量能获得tomcat的目录:

 ${catalina.base}/logs/psp_error.log   日志放到tomcat/logs 目录下文件名为psp_error.log

<root>和<logger> 是并列的节点,不能在root节点中包含对logger节点的映射,之前看别人写的xml文件有在root节点中包含logger节点的错误。

使用log4j 在调用其他类的方法时,会发现打印出来的行号是不正确的(自己可以试验),可以自己写方法方法处理。

 

public class Logger {    private Log logger;    public Logger(Log logger) {        this.logger = logger;    }    public void debug(String paramString) {        logger.debug(getFunctionName() + paramString);    }    public void debug(String paramString, Throwable t) {        logger.debug(getFunctionName() + paramString, t);    }    public void info(String paramString) {        logger.info(getFunctionName() + paramString);    }    public void info(String paramString, Throwable t) {        logger.info(getFunctionName() + paramString, t);    }    public void warn(String paramString, Throwable t) {        logger.warn(getFunctionName() + paramString, t);    }    public void warn(String paramString) {        logger.warn(getFunctionName() + paramString);    }    public void error(String paramString) {        logger.error(getFunctionName() + paramString);    }    public void error(String paramString, Throwable paramThrowable) {        logger.error(getFunctionName() + paramString, paramThrowable);    }    private String getFunctionName() {        StackTraceElement[] sts = Thread.currentThread().getStackTrace();        if (sts == null) {            return null;        }        for (StackTraceElement st : sts) {            if (st.isNativeMethod()) {                continue;            }            if (st.getClassName().equals(Thread.class.getName())) {                continue;            }            if (st.getClassName().equals(this.getClass().getName())) {                continue;            }//获取行号和类名   log4j也能显示行号,但是log4j显示的行号不准确。            return "[" + st.getClassName() + ":" + st.getLineNumber() + "] - ";        }        return null;    }}

StackTraceElement[] sts = Thread.currentThread().getStackTrace();  不明白可以查询jdk的API, 是去的方法的栈信息

public class LoggerFactory {    public static Logger getLogger(Class
clazz) { return new Logger(LogFactory.getLog(clazz)); } public static Logger getLogger(String loggerName) { return new Logger(LogFactory.getLog(loggerName)); }}

 

使用:

private Logger logger1 = LoggerFactory.getLogger(this.getClass());  或者类名.class 

 

如何使用log4j 参考    

参考

http://blog.csdn.net/subuser/article/details/20645163

http://heavyz.sourceforge.net/homepage/homepage_zh/comp/notes/log4j.html

http://blog.csdn.net/xiechao240/article/details/5922208

http://www.uml.org.cn/j2ee/201311051.asp

转载于:https://www.cnblogs.com/laj12347/p/3840637.html

你可能感兴趣的文章
ECMAScript 语法
查看>>
Flex 数据类型学习总结
查看>>
Linux下DNS服务,相关配置文件关系(刚刚学来的展示一下)
查看>>
linux学习第2天(自习)
查看>>
P2P大潮正在消退,第一梯队亦需自危
查看>>
Final 变量测试
查看>>
python面向对象
查看>>
linux下vim下光标下显示这一横杠
查看>>
仓储系统
查看>>
Vim的使用
查看>>
网络管理
查看>>
topic5:Qt入门之常用qt控件认知之QLineEdit
查看>>
常见算法在实际项目中的应用
查看>>
查看磁盘还剩多少,文件夹大小
查看>>
C#学习经典方法之(五)--LINQ中的DataContext类
查看>>
内存分页大小对性能的提升原理
查看>>
微软云计算介绍与实践(实践之二十)
查看>>
备份数据库的shell脚本
查看>>
《从0到1学习Flink》—— Data Source 介绍
查看>>
从零开始认识iptables
查看>>