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

2022-09-01 01:40:11

我有点迷茫与java记录器

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

在哪里可以看到日志?还有来自java.util.logging.Logger库的这句话:

在每次日志记录调用时,记录器最初都会根据记录器的有效日志级别对请求级别(例如SEIOUS或FINE)进行廉价检查。如果请求级别低于日志级别,则日志记录调用将立即返回。
通过此初始(廉价)测试后,记录器将分配一个 LogRecord 来描述日志记录消息。然后,它将调用筛选器(如果存在)以对是否应发布记录进行更详细的检查。如果通过,它将把LogRecord发布到它的输出处理程序。

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

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

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


答案 1

在哪里可以看到日志?

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

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

SEVERE是最重要的(最高优先级),并且是示例中显示的 3 个消息类型中最不重要的消息类型。因此,如果您的日志级别为 ,则仅记录消息。如果 level 为 ,则记录所有 3 条消息。FINESEVERESEVEREFINE

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

这是Java日志记录的一个很好的介绍。

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

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

要登录到控制台,请将上述内容替换为 :FileHandlerConsoleHandler

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

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


答案 2

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

logging overview

您将看到您的日志,其中与您的日志关联的(s)将生成所述日志(在 ,或 ...中)。
默认配置在根记录器上建立单个处理程序,用于将输出发送到控制台。HandlerLoggerConsoleStream

日志级别

每个日志消息都有一个关联的日志级别。该级别为日志消息的重要性和紧急性提供了粗略的指南。日志级对象封装一个整数值,值越高表示优先级越高。

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


推荐