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文档:
 
 

 
 
posted @ 2015-08-05 21:20  aoguren  阅读(280)  评论(0编辑  收藏  举报