是否可以在同一logging.properties文件中设置两个FileHandler?

时间:2009-12-07 10:00:00

标签: java logging

使用java.util.logging中的日志类,是否可以设置两个不同的格式化程序的FileHandler,它们将不同的日志信息写入两个不同的文件?

我目前正在使用logging.properties文件,处理程序行不鼓励:

handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler

我不知道如何在文件中区分两个java.util.logging.FileHandler

查看相关问题,看起来切换到Log4J会给我所需的灵活性,但是如果JSE日志库可以被用于实现我想要的某种方式,我宁愿避免依赖于另一个库。

3 个答案:

答案 0 :(得分:4)

详细阅读the relevant API表明了一个响亮的号码

然后选择在代码中动态创建记录器,如this question的答案所示,只是放弃和使用Log4J,或其他更复杂的记录库。

答案 1 :(得分:0)

有可能,我不知道如何在日志属性中声明它

public static void main(String args[])  {

    Logger logger=Logger.getLogger("");
    FileHandler fh=new FileHandler("<yourPath" +
            "%g.txt",20000,5);
    fh.setFormatter(new SimpleFormatter());
    FileHandler fd=new FileHandler("yourSecondPath" +
            "%g.txt",20000,5);
    fd.setFormatter(new SimpleFormatter());

    logger.addHandler(fd);
}

您可以轻松地用自己的格式化程序替换simpleFormaters并为两个处理程序设置不同级别的日志记录,但是我再次找不到有关在logging.properties文件中使用的语法的任何信息以获取此行为

答案 2 :(得分:-1)

您可以通过扩展Level类来创建自定义日志级别;只需给它一个唯一的ID。

import java.util.logging.*;

public class CustomLogLevel extends Level
{
  public static void main(String[] args) 
  {
    Logger log = Logger.getLogger("robertgrant.org");
    Level templevel = Level.WARNING;
    Level level = new CustomLogLevel("Rob Level", templevel.intValue());
    Level customlevel = level.parse("Rob Level");
    log.log(customlevel, "This is from a custom level");
  }

  public CustomLogLevel(String name, int value){
    super(name, value);
  }
}