【发布时间】:2013-04-20 10:16:29
【问题描述】:
某些日志记录级别似乎已损坏?
我直接从 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 日志记录”。无论如何,您会在我添加到代码 sn-p 的 cmets 中看到打印输出。正如预期的那样,记录器启用了级别 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 文件中手动写入一些属性。这有可能吗?
【问题讨论】:
-
我应该补充一点,我对整个日志记录概念还很陌生,所以如果您觉得在 Java web start 和 Java EE 和/或 GlassFish 方面有任何有价值的知识可以分享,请分享!
-
请不要发布可以复制的文本数据的屏幕截图。 “我已尽我所能使用 google” 请注意,Google 不会将图像中的文本编入索引(文本更可取的众多原因之一)。
-
是的,我理解你。但我确实在文本中写下了我所期望的和我得到的。所以这张图片是多余的,或者更多的是为任何可能不知道您可以将控制台连接到 JWS 应用程序的人提供图形上下文。但感谢您分享您的想法,安德鲁!是什么让您发现了这个问题?
-
我已经注册了对java-web-start 问题的兴趣,并且这篇文章有标签。现在你提到它,你错过了java 标签,几乎可以肯定它的关注者比所有其他标签的总和还要多。
-
哦,我看到你添加了那个标签。谢谢!
标签: java jakarta-ee logging java-web-start java.util.logging