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

时间:2010-06-11 19:36:35

标签: java java.util.logging

这可能是一个愚蠢的问题,但我对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

3 个答案:

答案 0 :(得分:28)

  

我在哪里可以看到日志?

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

  

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

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

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

这是一个很好的introduction to Java Logging

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

FINEST

要登录控制台,请将上面的Handler fh = new FileHandler("%t/wombat.log"); Logger.getLogger("").addHandler(fh); Logger.getLogger("com.wombat").setLevel(Level.FINEST); 替换为FileHandler

ConsoleHandler

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

答案 1 :(得分:5)

Java TM Logging Overview非常有趣,可以回答有关Java Logger的所有问题:

logging overview

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

  

日志级别

     

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

     

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

答案 2 :(得分:1)

它的位置取决于您的配置。 API文档中有关于此的详细信息。日志级别与您所说的完全相反。如果您的配置为FINE,则会显示FINE, WARNING, SEVERE的所有内容,但如果您将其设置为SEVERE,那么只会出现这些内容。

通常,您应该在调试时使用FINE,并在生产环境中切换到SEVERE