我从java学习这个记录器并尝试从主类调用MyLogger类但它似乎没有工作
MyLogger.java
public class MyLogger {
public MyLogger() {
Logger logger = Logger.getLogger("MyLog");
FileHandler fh;
try {
fh = new FileHandler("c:\\opt\\MyLogFile.log", true);
logger.addHandler(fh);
logger.setLevel(Level.ALL);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
logger.log(Level.WARNING,"My first log");
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Client.java
public class Client {
private final static Logger LOGGER = Logger.getLogger(Client.class.getName());
public static void main(String[] args) {
LOGGER.setLevel(Level.SEVERE);
LOGGER.getName();
LOGGER.getClass();
LOGGER.info("ABC");
}
}
答案 0 :(得分:1)
为什么不调用MyLogger.java来创建日志文件?
如果 指的是运行Client
,那就是因为该类与您的MyLogger
类之间没有任何关系。
是否有更好的方法来记录eclipse控制台而不是放置 关于每个类的每个方法的LOGGER?
更好是非常主观的。我见过的大多数源代码都使用了您在Client
课程中使用的范例。也就是说,声明一个带有封闭类名称的static final Logger
,并在需要在该类中记录内容的地方使用它。
某些应用程序使用AOP概念进行记录。
为什么有些人在关闭日志文件之前使用flush()?
某些实现可能会缓冲日志消息,以便不进行许多小型IO系统调用,而是制作少量大型系统调用。关闭日志文件可能无法刷新缓冲区,因此您需要明确flush
它。