gpt4 book ai didi

java记录器从另一个类调用

转载 作者:行者123 更新时间:2023-12-01 12:49:13 25 4
gpt4 key购买 nike

我正在从 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();
}
}
}

客户端.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");


}
}
  1. 为什么不调用MyLogger.java来创建日志文件?
  2. 是否有更好的方法来记录 Eclipse 控制台,而不是将 LOGGER 放在每个类的每个方法上?
  3. 为什么有些人在关闭日志文件之前使用flush()?

最佳答案

Why is it not calling the MyLogger.java to create the log file?

如果it指的是运行Client,那么那是因为该类与您的MyLogger类之间没有关系。

Is there a beter way to log the eclipse console rather than putting LOGGER on each methods for each class?

更好是非常主观的。我见过的大多数源代码都使用您在 Client 类中使用的范例。也就是说,使用封闭类的名称声明一个静态最终记录器,并在需要记录该类中某些内容的地方使用它。

一些应用程序使用 AOP 概念进行日志记录。

Why some uses flush() before closing the log file?

某些实现可能会缓冲日志消息,以便不进行许多小型 IO 系统调用,而是进行一些大的系统调用。关闭日志文件可能不会刷新缓冲区,因此您需要显式地刷新它。

关于java记录器从另一个类调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24377543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com