我用静态方法
编写了一个单独的MyLogger类static public void setup(String className, Exception e, Level level) {
System.out.println("className = " + className);
Logger logger = Logger.getLogger(className);
logger.setLevel(Level.INFO);
try {
fileTxt = new FileHandler("Logging.%u.%g.txt",1024 * 1024, 10, true );
// create a TXT formatter
formatterTxt = new SimpleFormatter();
fileTxt.setFormatter(formatterTxt);
logger.addHandler(fileTxt);
logger.log(level, e.toString(), e);
} catch (IOException | SecurityException ex) {
System.out.println("SecurityException ");
Logger logger2=Logger.getLogger(MyLogger.class.getName());
logger2.addHandler(new ConsoleHandler());
logger2.log(Level.SEVERE, null, ex);
}
}
此静态方法接收一个字符串className,我将其作为参数放入Logger.getLogger()。
在另一个类中,我调用MyLogger.setup(CommonFrame.class.getName(),e,Level.SEVERE)。 一切正常。但问题是在文件中我得到“2014年5月25日下午2:05:30 javagui.MyLogger设置”,我认为它应该是这样的“2014年5月25日下午2:05:30 javagui.CommonFrame “因为我将这个名字分配给了记录器。 我对吗?如果是,我该如何解决?
答案 0 :(得分:0)
您已使用format的java.util.logging.SimpleFormatter属性来使用logger name而不是source classname。
修改启动脚本以设置以下系统属性:
-Djava.util.logging.SimpleFormatter.format="%1$tc %3$s%n%4$s: %5$s%6$s%n"
或者修改您的logging.properties以包括:
java.util.logging.SimpleFormatter.format=%1$tc %3$s%n%4$s: %5$s%6$s%n
否则,您可以创建自定义formatter并使用它提取您希望在日志文件中看到的information。