依赖的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());
}
}