hsqldb 内部事件日志配置
Posted
技术标签:
【中文标题】hsqldb 内部事件日志配置【英文标题】:hsqldb internal event log configuration 【发布时间】:2010-11-23 20:03:30 【问题描述】:如何在 hsqldb 中配置内部事件监控?当我运行我的 Java 应用程序时,我收到以下警告:
log4j:WARN No appenders could be found for logger (HSQLDB2C7984E18B.org.hsqldb.persist.Logger).
log4j:WARN Please initialize the log4j system properly.
documentation 告诉我 log4j 不是唯一的选择,但它没有告诉我如何配置我的应用程序。谁能指出我这个文档?请记住,我不想将 log4j 用于 hsqldb。
值得一提的是,我引用的第 3 方 jar 需要 log4j。 hsqldb 是否会自动检测到 log4j 存在然后尝试使用它?还是我错过了有关日志记录工作原理的一些基本知识?
【问题讨论】:
【参考方案1】:查看this link。它说
如果在类路径中找到 Log4j,则日志记录工具将移交给 Log4j,否则将移交给 java.util.logging。
【讨论】:
事实上,我的类路径中确实有一个 log4j.properties 文件,我可以通过指定 rootLogger 级别来修复上述警告,但重点是我不想使用 log4j对于 hsqldb。 谢谢,YWE。因为我的第 3 部分库使用 log4j,所以后者需要在类路径中。我在此页面上的回答中描述了如何修复上述 WARN 消息。有关配置 log4j 以避免警告的更多一般帮助,请参阅 ***.com/questions/4258849/override-log4j-properties。【参考方案2】:该消息指示的结果是不会发生 HSQLDB 的日志记录,因为没有找到附加程序。
如果您希望禁止显示消息,请在 log4j.properties 文件中添加如下一行:
log4j.logger.HSQLDB2C7984E18B.org.hsqldb.persist.Logger=FATAL
这将只记录 FATAL 事件,这在正常操作中不会发生。
您还声明您不想将 log4j 用于 HSQLDB。可以使用 log4j 的软件组件将日志记录配置(包括级别和记录位置等)留给 log4j 属性设置,您可以对其进行编辑和配置。
在这种情况下,记录器名称基于最初自动生成的“唯一”数据库名称,但您可以在 HSQLDB 中更改。
【讨论】:
【参考方案3】:因为 YWE 指出,如果在类路径中找到 hsqldb 默认使用 log4j,我需要弄清楚如何覆盖在 3rd-party 库中找到的 log4j.properties。我设法做到了以下几点:
将已有的log4j.properties复制到我的项目中,并在开头添加以下行:
log4j.rootLogger=WARN, CONSOLE
添加以下 VM 参数:
-Dlog4j.log4j.defaultInitOverride=true
-Dlog4j.configuration=C:/full/path/to/my/log4j.properties
确保这行代码在任何人(例如 hsqldb)尝试使用 log4j 之前运行:
org.apache.log4j.PropertyConfigurator.configure("log4j.properties");
【讨论】:
以上是关于hsqldb 内部事件日志配置的主要内容,如果未能解决你的问题,请参考以下文章