嗨,这是我使用 java.util.Logger 的 CustomLogger 类
public class CustomLogger {
private String pathToLogFiles = "/tmp/sos/logs/";
private Logger logger;
public CustomLogger(String prefix) {
logger = Logger.getLogger(prefix);
if( Utils.detectEnvironment() == Environment.LIVE ) {
String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
String filename = "log_" + date + ".txt";
FileHandler fileHandler = null;
try {
fileHandler = new FileHandler(this.pathToLogFiles + filename);
logger.addHandler(fileHandler);
fileHandler.setFormatter(new SimpleFormatter());
} catch (IOException e) {
logger.addHandler(new ConsoleHandler());
this.error(e.getMessage());
}
}
else {
logger.addHandler(new ConsoleHandler());
}
}
public void info(String message) {
logger.info(message);
}
public void error(String message) {
logger.warning(message);
}
}
在开发环境中,记录到控制台工作正常,但在实时环境中,而不是记录到一个文件,因为它应该创建 12 个不同的文件,其中包含每条发送的日志消息的 xml。
:/tmp/sos/logs# ls
log_2016-09-09.txt log_2016-09-09.txt.1.lck log_2016-09-09.txt.2.lck log_2016-09-09.txt.3.lck log_2016-09-09.txt.4.lck log_2016-09-09.txt.5.lck log_2016-09-09.txt.6.lck
log_2016-09-09.txt.1 log_2016-09-09.txt.2 log_2016-09-09.txt.3 log_2016-09-09.txt.4 log_2016-09-09.txt.5 log_2016-09-09.txt.6 log_2016-09-09.txt.lck
有人可以告诉我那里出了什么问题吗?
谢谢
最佳答案
每次执行 CustomLogger 构造函数时,您都会创建并打开一个新的 FileHandler。您需要确保仅创建和添加 FileHandler once每个 JVM 进程。
否则,你需要在opening a new FileHandler之前确定一个合适的时间关闭之前的FileHandler。 .
关于java.util.Logger 创建的文件比应有的多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39414142/