依赖的jar
commons-logging-1.1.3.jar log4j-1.2.17.jar junit-4.10.jar(测试时使用)
log4j.properties配置
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target=System.out
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %p %l : %m%n
- log4j.appender.file=org.apache.log4j.FileAppender
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern =[%d{yyyy-MM-dd HH:mm:ss}] %p %l : %m%n
- # ConversionPattern参数的格式含义
- # 格式名 含义
- # %c 输出日志信息所属的类的全名
- # %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
- # %f 输出日志信息所属的类的类名
- # %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
- # %m 输出代码中指定的信息,如log(message)中的message
- # %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
- # %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
- # %r 输出自应用启动到输出该日志信息所耗费的毫秒数
- # %t 输出产生该日志事件的线程名
- log4j.rootLogger=info,stdout
日志生成器 LoggerUtil.java
- package com.utils.log4j;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import org.apache.log4j.FileAppender;
- import org.apache.log4j.Level;
- import org.apache.log4j.Logger;
- import org.apache.log4j.PatternLayout;
- import org.apache.log4j.RollingFileAppender;
- public class LoggerUtil {
- public static Logger getLog(Class<?> clazz) {
- Logger logger = Logger.getLogger(clazz); // 生成新的Logger
- logger.removeAllAppenders(); // 清空Appender,特別是不想使用現存實例時一定要初期化
- logger.setLevel(Level.DEBUG); // 设定Logger級別。
- logger.setAdditivity(true); // 设定是否继承父Logger。默认为true,继承root输出;设定false后将不出书root。
- FileAppender appender = new RollingFileAppender(); // 生成新的Appender
- PatternLayout layout = new PatternLayout();
- layout.setConversionPattern("[%d{yyyy-MM-dd HH:mm:ss}] %p %l : %m%n"); // log的输出形式
- appender.setLayout(layout);
- appender.setFile(getTime("yyyy-MM-dd") + ".log"); // log输出路径
- appender.setEncoding("UTF-8"); // log的字符编码
- appender.setAppend(true); //日志合并方式: true:在已存在log文件后面追加 false:新log覆盖以前的log
- appender.activateOptions(); // 适用当前配置
- logger.addAppender(appender); // 将新的Appender加到Logger中
- return logger;
- }
- private static String getTime(String format) {
- SimpleDateFormat sdf = new SimpleDateFormat(format);
- return sdf.format(new Date());
- }
- }
测试类
- package com.utils.log4j.test;
- import org.apache.log4j.Logger;
- import org.junit.Test;
- public class LoggerUtilTest {
- private static Logger logger = LoggerUtil.getLog(LoggerUtilTest.class);
- @Test
- public void add() {
- logger.info(Thread.currentThread().getStackTrace()[1].getMethodName());
- }
- @Test
- public void view() {
- logger.info(Thread.currentThread().getStackTrace()[1].getMethodName());
- }
- @Test
- public void edit() {
- logger.info(Thread.currentThread().getStackTrace()[1].getMethodName());
- }
- @Test
- public void delete() {
- logger.info(Thread.currentThread().getStackTrace()[1].getMethodName());
- }
- }