hsqldb内部事件日志配置

时间:2010-11-23 20:03:30

标签: java logging log4j hsqldb

如何在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。

值得一提的是我引用的第三方jar需要log4j。 hsqldb是否自动检测到log4j存在然后尝试使用它?或者我错过了有关日志记录如何工作的基本信息?

3 个答案:

答案 0 :(得分:1)

结帐this link。它说

  

如果在类路径中找到Log4j,日志记录工具将切换到Log4j,否则将切换到java.util.logging。

答案 1 :(得分:0)

消息表明的结果是,由于没有找到appender,因此不会记录HSQLDB。

如果您希望取消该消息,请在log4j.properties文件中添加如下所示的行:

log4j.logger.HSQLDB2C7984E18B.org.hsqldb.persist.Logger=FATAL

这将仅记录FATAL事件,这在正常操作中不会发生。

您还声明您不想将log4j用于HSQLDB。可以使用log4j的软件组件将日志记录配置(包括级别和记录位置等)留给log4j属性设置,您可以对其进行编辑和配置。

在这种情况下,记录器名称基于“唯一”数据库名称,该名称最初是自动生成的,但您可以在HSQLDB中更改。

答案 2 :(得分:0)

因为正如YWE所说,如果在类路径中找到hsqldb默认使用log4j,我需要弄清楚如何覆盖第三方库中的log4j.properties。我设法做了如下:

  1. 将现有的log4j.properties复制到我的项目中,并在开头添加以下行:

    log4j.rootLogger=WARN, CONSOLE
    
  2. 添加以下VM参数:

    -Dlog4j.log4j.defaultInitOverride=true
    -Dlog4j.configuration=C:/full/path/to/my/log4j.properties
    
  3. 确保在任何人(例如hsqldb)尝试使用log4j之前运行此代码行:

    org.apache.log4j.PropertyConfigurator.configure("log4j.properties");