这可能是一个愚蠢的问题,但我对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
?
答案 0 :(得分:28)
我在哪里可以看到日志?
在日志文件或标准输出中,具体取决于您的实际日志处理程序配置。这可以通过属性文件设置,也可以直接通过日志记录API设置。
这是否意味着如果我有3个请求级别日志...
SEVERE
是最重要的(最高优先级),FINE
是示例中显示的3中最不重要的消息类型。因此,如果您的日志级别为SEVERE
,则只会记录SEVERE
条消息。如果level为FINE
,则会记录所有3条消息。
这在实际生产环境中非常有用,您可能只想记录错误和可能的警告(希望 - 非常罕见,但您想了解它们),因此您可以将日志级别设置为{ {1}}。但是,在您的开发环境中,例如调试问题时,您希望查看日志中的所有信息,即使它会创建大量日志数据并降低应用程序速度。因此,您将日志级别设置为WARNING
或FINE
。
这是一个很好的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
的所有问题:
您会看到与您的Handler
相关联的Logger
将生成所述日志的日志(位于Console
或Stream
... )。
默认配置在根记录器上建立单个处理程序,用于将输出发送到控制台。
日志级别:
每条日志消息都有一个关联的日志级别。该级别粗略指导了日志消息的重要性和紧迫性。日志级别对象封装整数值,值越高表示优先级越高。
Level
类定义了七个标准日志级别,范围从FINEST
(最低优先级,最低值)到SEVERE
(最高优先级,最高值强>)。
答案 2 :(得分:1)
它的位置取决于您的配置。 API文档中有关于此的详细信息。日志级别与您所说的完全相反。如果您的配置为FINE
,则会显示FINE, WARNING, SEVERE
的所有内容,但如果您将其设置为SEVERE
,那么只会出现这些内容。
通常,您应该在调试时使用FINE
,并在生产环境中切换到SEVERE
。