java.util.logging.Logger 在哪里存储他们的日志

新手上路,请多包涵

我对 java Logger 有点迷茫

private static Logger logger = Logger.getLogger("order.web.OrderManager");
logger.info("Removed order " + id + ".");

我在哪里可以看到日志?这也是来自 java.util.logging.Logger 库的引用:

在每次日志记录调用中,Logger 最初针对记录器的有效日志级别执行请求级别(例如 SEVERE 或 FINE)的廉价检查。如果请求级别低于日志级别,则日志调用立即返回。

通过此初始(廉价)测试后,Logger 将分配一个 LogRecord 来描述日志消息。然后它将调用过滤器(如果存在)来更详细地检查是否应发布记录。如果通过,它将发布 LogRecord 到它的输出处理程序。

这是否意味着如果我有 3 request level 日志:

 logger.log(Level.FINE, "Something");
logger.log(Level.WARNING, "Something");
logger.log(Level.SEVERE, "Something");

我的 log level 是严重的,我可以看到所有三个日志,如果我的 log level 是警告,那么我看不到严重的日志,对吗?我该如何设置 log level

原文由 Thang Pham 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 434
2 个回答

我在哪里可以看到日志?

在日志文件或标准输出中,具体取决于您的实际日志处理程序配置。这可以通过属性文件或直接通过日志记录 API 进行设置。

这是否意味着如果我有 3 个请求级别的日志…

SEVERE 是最重要的(最高优先级)和 FINE 是示例中显示的 3 种最不重要的消息类型。因此,如果您的日志级别是 SEVERE ,则只会记录 SEVERE 消息。如果级别是 FINE ,则记录所有 3 条消息。

这在实际生产环境中非常有用,您可能只想记录错误和可能的警告(希望它们很少见,但您想了解它们),因此您可以将日志级别设置为 WARNING 。然而,在您的开发环境中,例如在调试问题时,您希望在日志中查看所有信息,即使它会创建大量日志数据并降低应用程序的速度。因此,您将日志级别设置为 FINEFINEST

Here 是 对 Java Logging 的一个很好的介绍

更新: 上面页面中的一个简单示例,用于将记录器配置为记录到 FINEST 级别的文件:

 Handler fh = new FileHandler("%t/wombat.log");
Logger.getLogger("").addHandler(fh);
Logger.getLogger("com.wombat").setLevel(Level.FINEST);

要登录到控制台,请将上面的 FileHandler 替换为 ConsoleHandler

 Handler ch = new ConsoleHandler();
Logger.getLogger("").addHandler(ch);

这只是一个示例 - 在实际应用程序中,最好通过配置属性文件配置日志记录。

原文由 Péter Török 发布,翻译遵循 CC BY-SA 3.0 许可协议

Java TM 日志记录概述 非常有趣,可以回答您关于 Java Logger 的所有问题:

记录概述

You will see your log where the Handler (s) associated with your Logger will generate said Log (in a Console , or in a Stream ……)。

默认配置在根记录器上建立单个处理程序,用于将输出发送到控制台。

日志级别

每条日志消息都有一个关联的日志级别。级别给出了日志消息的重要性和紧迫性的粗略指南。日志级别对象封装了一个整数值,值越大优先级越高。

Level 类定义了七个标准日志级别,范围从 FINEST (最低优先级,具有最低值)到 SEVERE具有最高优先级,值)。

原文由 VonC 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏