我想记录我的Java应用程序的日志。 我创建了这个类:
public class Log {
final Logger logger = Logger.getLogger("DigiScope.log");
public static void main(String[] args) {
}
public Log(String message) {
try {
// Create an appending file handler
boolean append = true;
FileHandler handler = new FileHandler("my.log", append);
// Add to the desired logger
Logger logger = Logger.getLogger("com.mycompany");
logger.addHandler(handler);
logger.info(message);
} catch (IOException e) {
}
}
}
对于每个按钮,我都有这样的代码:
private void btnNewPatient ActionPerformed(java.awt.event.ActionEvent evt) {
Log a = new Log("New Patient created");
}
此代码创建一个log.txt,但仅记录第一个按钮上的单击,其他按钮上的其他按钮不记录。
你能帮助我吗?
谢谢。
答案 0 :(得分:2)
在你的应用程序中创建一个专有的日志包装器没有多大意义 - java.util.logging已经是这样的包装器,因此我建议直接使用它。您应该在类中创建记录器对象,然后在处理程序方法中记录消息,如下所示:
logger.info("New Patient created");
您应该在整个班级中使用相同的Logger
实例,而不是始终创建新实例。标准方法是为每个类创建一个static final
实例。
最好从配置文件配置日志记录,而不是从代码配置。
我建议您阅读Java Logging Tutorial。
答案 1 :(得分:1)
PéterTörök和StriplingWarrior建议他们以正确的方式使用Logging框架:
logger.info("New Patient created");
而不是为每个语句创建一个新的Logger。
但即使你的构造,你应该有一个包含所有日志信息的日志文件。
对于Log构造函数的每次调用,都会创建一个新的my.log.X
文件(X是一个数字)。此时,每个日志语句都会记录在此文件中。
因此,如果您调用构造函数三次(使用消息:“first”,“second”,“third”),那么您应该拥有文件:my.log,my.log.1。 my.log.2
my.log
:“first”,“second”,“third”my.log.1
:“second”,“third”my.log.2
:“第三”答案 2 :(得分:0)
我猜它可能记录了每次点击,但是你用每个新的日志消息重新打开文件,而不是附加到它。