log4j使用细节
问题一:打印不同类的类名信息?
在log4j中通常是通过Logger.getLogger(class)指定所打印的类名,但是当我们需要打印不同类信息时,目前只能这样做,在不同的类文件中构建不同的logger,比如:
类1:
1: public class Water
2: {
3: private static Logger LOGGER = Logger.getLogger(Water.class);
4: // 流水的方法
5: public synchronized void flowWater(String studentName)
6: {
7: LOGGER.debug("结束为"+studentName+"流水");
8: }
9: }
类2:
1: public class Student
2: {
3: private static Logger LOGGER = Logger.getLogger(Student.class);
4: // 学生接水的全过程
5: public void receiveWater()
6: {
7: LOGGER.info("从教室跑向饮水机");
8: LOGGER.info("跑回教室");
9: }
10: }
另一种更简洁的方式,比如
类1:
public class Water
{
public synchronized void flowWater(String studentName)
{
Logger.getLogger(Water.class).debug("结束为"+studentName+"流水");
}
}
类2:
public class Student
{
public void receiveWater()
{
Logger.getLogger(Student.class).debug("从教室跑向饮水机");
Logger.getLogger(Student.class).debug("跑回教室");
}
}
问题二:怎样每小时生成一个文件?
为文件输出模式设置参数即可,
比如:
# 输出源file将日志输出到文件
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern = ’.’yyyy-MM-dd-HH
# 日志输出的文件
log4j.appender.file.File = mylog.log
#是否在原有文件中添加日志
# log4j.appender.file.Append=false
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern =%d{yyyy-MM-dd HH:mm:ss} [%-5p] %t (%F:%L) -%m%n
由DatePattern控制,具体对应格式如下:
1)’.’yyyy-MM: 每月
2)’.’yyyy-ww: 每周
3)’.’yyyy-MM-dd: 每天
4)’.’yyyy-MM-dd-a: 每天两次
5)’.’yyyy-MM-dd-HH: 每小时
6)’.’yyyy-MM-dd-HH-mm: 每分钟
主要信息,可以查看官方的API文档: