【发布时间】:2010-06-11 19:36:34
【问题描述】:
这可能是一个愚蠢的问题,但我对 java Logger 有点迷茫
private static Logger logger = Logger.getLogger("order.web.OrderManager");
logger.info("Removed order " + id + ".");
在哪里可以看到日志?这也是来自 java.util.logging.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?
【问题讨论】:
-
内置记录器不是那么好。将其替换为 log4j (logging.apache.org/log4j/1.2)。 log4j 网站上有一些很好的文档解释了如何使用它...
-
@bwawok:针对 Apache Commons Logging 编写代码也不错。如果 log4j 可用,它将使用 log4j,如果 log4j 不可用,它将回退到内置日志记录。
-
我不会使用公共日志记录。它有很多问题,并且在使用tomcat时很臭。如果在 log4j 中为自己编码。如果编写库代码,请使用 slf4j (slf4j.org)
-
与其只是说“内置日志记录很糟糕”,不如解释一下为什么而不是盲目地模仿流行观点可能会有所帮助......