gpt4 book ai didi

Java公共(public)记录器

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:13 29 4
gpt4 key购买 nike

是否允许为您的日志创建一个静态类?

public final class Log {

public static final Logger LOGGER = Logger.getLogger(Log.class.getName());

}

并在需要时调用它?

Log.LOGGER.info("Let's log something!");

而不是在每个类上添加这一行代码?

private static final Logger LOGGER = Logger.getLogger(Log.class.getName());

我读到信息说你应该在每个类中初始化 Logger。

public static final Logger LOGGER = Logger.getLogger(ClassName.class.getName());

或者怎么走?我更喜欢一些静态方法而不是在每个类中初始化记录器...

我试了一下,结果如下。

预览:

日志

public class Log {

public static final Logger LOGGER = Logger.getLogger(Log.class.getName());

}

应用

final class App() {

public static void main(String[] args) {
start();
}

private static void start() {
Log.LOGGER.info("Starting the application.");
}

}

内核

public final class Kernel() {

public static void preload() {
Log.LOGGER.info("Preload kernel modules.");
}

}

输出:

Aug 26, 2015 2:17:34 PM nl.nberlijn.powercontrol.App start
INFO: Starting the application.
Aug 26, 2015 2:17:34 PM nl.nberlijn.powercontrol.kernel.Kernel preload
INFO: Preload kernel modules.

最佳答案

如果您想遵循类似的方法,我建议您使用静态方法进行日志记录,而不是像下面的示例那样:

 public final class Log {

private static final Logger LOGGER = Logger.getLogger(Log.class.getName());
public void logError(String someText) {
LOGGER.error(someText);
}
public static LogInfo(String someText) {
LOGGER.info(someText);
}
}

然后在您的客户端类中简单地调用它:

    private static void start() {
LogInfo("Starting the application.");
}

当然在你需要静态导入之前:

import static com.yourpackage.Log.*

这是一种可以遵循的方法,但我更愿意将记录器注入(inject)到需要记录某些内容的应用程序组件中,从而使事情更加解耦......

关于Java公共(public)记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32226164/

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