问题一:打印不同类的类名信息?
在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文档:
参考: