Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Logger.getGlobal()和Logger.getAnonymousLogger()之间的差异?_Java_Logging_Java.util.logging - Fatal编程技术网

Java Logger.getGlobal()和Logger.getAnonymousLogger()之间的差异?

Java Logger.getGlobal()和Logger.getAnonymousLogger()之间的差异?,java,logging,java.util.logging,Java,Logging,Java.util.logging,以下是我的示例代码: public class Logs { private static Logs logHandler; public static Logs handler() { if (null == logHandler) { logHandler = new Logs(); } return logHandler; } public void logError(String

以下是我的示例代码:

public class Logs {
    private static Logs logHandler;

    public static Logs handler() {
        if (null == logHandler) {
            logHandler = new Logs();
        }
        return logHandler;
    }

    public void logError(String message) {
        Logger.getGlobal().log(Level.SEVERE, message);
    }
}
我真的不明白这两者之间的区别,因为它们给出了完全相同的输出:

Logger.getGlobal.log(Level.SEVERE, message);
以及:

有人能告诉我他们的区别吗,这样我就知道我应该用哪一个了


提前谢谢你

匿名记录器没有名称,这意味着您不能将记录器名称用作登录名。匿名记录器不执行安全检查,这意味着任何代码都可以更改匿名记录器的设置

全局记录器就是所谓的日志API。它是一个命名的记录器,如果代码试图修改设置,它将执行安全检查

如果可能,文档建议您使用

从文件中:

提供“全局”记录器对象是为了方便随意使用日志包的开发人员。认真使用日志记录包(例如在产品中)的开发人员应该创建并使用他们自己的日志记录对象,并使用适当的名称,以便在适当的日志记录粒度上控制日志记录。开发人员还需要保持对其记录器对象的强引用,以防止它们被垃圾收集

从文件中:

创建一个匿名记录器。新创建的记录器未在LogManager命名空间中注册。将不会对记录器的更新进行访问检查

此出厂方法主要用于小程序。因为生成的记录器是匿名的,所以创建类可以将其保持为私有的。这样就不需要进行正常的安全检查,从而允许不受信任的小程序代码更新记录器的控制状态。例如,小程序可以在匿名记录器上执行setLevel或addHandler

即使新记录器是匿名的,它也被配置为将根记录器(“”)作为其父记录器。这意味着默认情况下,它从根记录器继承其有效级别和处理程序。通过setParent方法更改其父级仍需要该方法指定的安全权限


另外,如果要保留示例类,请确保通过创建静态最终字段来保留对全局记录器的强引用。

谢谢!现在我明白了两者之间的区别。
Logger.getAnonymousLogger.log(Level.SEVERE, message);