我用静态方法写了一个单独的类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)。一切正常。但问题是,在文件中我得到了“May 25,2014 2:05:30 PM javagui.MyLogger setup”,我认为它应该改为“May 25,2014 2:05:30 PM javagui.CommonFrame”,因为我将该名称分配给了日志记录器。我对吗?如果是,我该如何修复它?
2条答案
按热度按时间lf5gs5x21#
您已经使用java.util.logging.SimpleFormatter的format属性来使用记录器名称,而不是源类名。
修改启动脚本以设置以下系统属性:
或者修改您的logging.properties以包括:
否则,您可以创建一个自定义formatter,并使用它提取您希望在日志文件中看到的information。
tquggr8v2#
可以使用log(LogRecord)方法并指定类名。