有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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.

{a1}告诉我log4j不是唯一的选项,但它没有告诉我如何配置应用程序。有人能给我指一下这份文件吗?记住,我不想对hsqldb使用log4j

值得一提的是,我引用的第三方jar需要log4j。hsqldb是否自动检测到log4j存在,然后尝试使用它?还是我遗漏了一些关于日志工作原理的基本知识


共 (3) 个答案

  1. # 1 楼答案

    因为正如你所指出的,如果在类路径中找到,hsqldb默认使用log4j,我需要弄清楚如何覆盖log4j。在第三方库中找到属性。我做到了以下几点:

    1. 复制现有的log4j。属性,并在开头添加以下行:

      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");
      
  2. # 2 楼答案

    看看this link。上面写着

    The logging facility hands off to Log4j if Log4j is found in the classpath, and otherwise will hand off to java.util.logging.

  3. # 3 楼答案

    消息指出的结果是,由于未找到appender,因此不会对HSQLDB进行任何日志记录

    如果您希望抑制该消息,请在log4j中添加一行,如下所示。属性文件:

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

    这将只记录在正常操作中不会发生的致命事件

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

    在本例中,记录器名称基于最初自动生成的“唯一”数据库名称,但可以在HSQLDB中更改