Java 将Log4J信息发送到数据库并调试到控制台?

Java 将Log4J信息发送到数据库并调试到控制台?,java,log4j,Java,Log4j,我有com.mycompany.library* 我希望调试转到控制台,信息转到数据库。我怎样才能做到呢? 这是我的log4j.xml的一部分 使用此配置: 信息和调试转到控制台。但是,带有双条目的INFO和DUBUG也会转到DB 我希望数据库中的事件具有信息级别(或更高级别),而不是调试。如何做到这一点?您可以在附加器(而不是记录器)上设置treshold。例如: <appender name="std-out" class="org.apache.log4j.ConsoleAppe

我有com.mycompany.library*

我希望调试转到控制台,信息转到数据库。我怎样才能做到呢? 这是我的log4j.xml的一部分


使用此配置: 信息和调试转到控制台。但是,带有双条目的INFO和DUBUG也会转到DB


我希望数据库中的事件具有信息级别(或更高级别),而不是调试。如何做到这一点?

您可以在附加器(而不是记录器)上设置treshold。例如:

<appender name="std-out" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout">...</layout>
    <param name="Threshold" value="info"/>
</appender>

编辑:您也不必在
com.mycompany
记录器和根记录器上都设置appender。这就是为什么会有重复的条目,因为它们被视为加法(因此在
com.mycompany
级别上,基本上有2个DB追加器)

只需在root上设置DBAppender并将其从
com.mycompany
logger中删除即可。

Yep。我加了一个到DBAppender。进入数据库的只有信息事件。但仍然使用此Logger和root配置,进入DB的是两个条目:(