某些日志记录级别似乎已损坏?
我直接从 GlassFish 3.1.2.2 实例运行 Java web start(我将从现在开始调用JWS )应用程序。客户端有一个像这样的静态记录器:
private final static Logger LOGGER;
static {
LOGGER = Logger.getLogger(App.class.getName());
// Not sure how one externalize this setting or even if we want to:
LOGGER.setLevel(Level.FINER);
}
在 main 方法中,我从对日志记录功能的一些简单测试开始我的逻辑:
alert("isLoggable() INFO? " + LOGGER.isLoggable(Level.INFO)); // Prints TRUE!
alert("isLoggable() FINE? " + LOGGER.isLoggable(Level.FINE)); // ..TRUE
alert("isLoggable() FINER? " + LOGGER.isLoggable(Level.FINER)); // ..TRUE
alert("isLoggable() FINEST? " + LOGGER.isLoggable(Level.FINEST)); // ..FALSE
我的警报方法将显示JOptionPane
“真正的 GUI 日志记录”对话框。无论如何,您会在我添加到代码片段的评论中看到打印输出。正如预期的那样,记录器启用了级别INFO、FINE和FINER但不是FINEST。
在我的警报方法之后,我输入:
// Info
LOGGER.info("Level.INFO");
LOGGER.log(Level.INFO, "Level.INFO");
// Fine
LOGGER.fine("Level.FINE");
LOGGER.log(Level.FINE, "Level.FINE");
// Finer
LOGGER.finer("Level.FINER");
LOGGER.log(Level.FINER, "Level.FINER");
LOGGER.entering("", "Level.FINER", args); // <-- Uses Level.FINER!
// Finest
LOGGER.finest("Level.FINEST");
LOGGER.log(Level.FINEST, "Level.FINEST");
我转到我的 Java 控制台并单击“高级”选项卡,然后勾选“启用日志记录”。好的,让我们启动应用程序。猜猜会发生什么?只有 Level.INFO 打印!这是我的证明(看底部):
我已经尽力在我的计算机上搜索日志文件,看看 Level.FINE 和 Level.FINER 是否最终出现在文件系统的某个位置。但是,我无法在任何地方找到日志消息。
问题总结
为什么在提供的示例中似乎记录
Level.FINE
和Level.FINER
不起作用?我在我的静态初始化块中设置了日志记录级别,但我肯定想将此设置外部化为某种配置文件,可能与我在 GlassFish 上部署的 EAR 文件一起打包。或者为什么不在我们从服务器下载的 JNLP 文件中手动写入一些属性。这有可能吗?