Java公共(public)记录器

标签 java logging

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

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/

相关文章:

java - 为什么这是 SQL 文件或流的分隔符?

java - 将字符串日期转换为 java.sql.Date

c# - 在 c# 代码中删除监听器/禁用跟踪源的日志

java - 日志消息从何而来

java - java logRecord 中的 getSourceClassName 方法给出 null 值

适用于 Node 和浏览器的 JavaScript 日志记录库

java - 如何为自定义日志记录解决方案正确创建性能测试?

java - 在玻璃板上绘制图形

java - 如果在验证规则中使用类型代码,如何进行重构以消除类型代码?

java - 在java中执行lua脚本