-2

我使用 log4j 向数据库报告错误:

log4j.rootLogger=DEBUG, CUBRID

# CUBRID Database
log4j.appender.CUBRID = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.CUBRID.driver = org.postgresql.Driver
log4j.appender.CUBRID.user = postgres
log4j.appender.CUBRID.password = postgres
log4j.appender.CUBRID.URL = jdbc:postgresql://localhost:5432/logs
log4j.appender.CUBRID.sql = INSERT INTO LOGS VALUES('%x','%d{yyyy-MM-dd  HH:mm:ss.SSS}','%C','%p','%m')
log4j.appender.CUBRID.layout=org.apache.log4j.PatternLayout

我有一个代码:

public class LogTest extends BaseDAO<Object> {

    public void show()
    {
        Logger log = Logger.getLogger(LogTest.class.getName());
        log.info("Wystartowal");
        log.warn("Trwanie aplikacji");
        try {
            if ( 1 / 0 == 0 ) {
                System.out.println("Czekaj...");
            }
        } catch( Exception ex) {
            log.error("Komunikat bledu", ex);
        }
        log.fatal("Koniec aplikacji");
    }
}

所有写入数据库,但它保存了我所有的日志,我想只写我使用命令 log.warn()、log.fatal() 等给自己的内容。怎么做?

4

2 回答 2

3

这可以通过调整 logLevel 来完成。尝试像这样更改值

log4j.rootLogger=WARN, CUBRID
于 2012-10-04T13:09:16.220 回答
2

您必须将日志级别更改为DEBUG.

log4j.rootLogger=WARN, CUBRID

本教程非常全面:log4j 简介


仅记录您自己的信息消息,但允许 >=WARN更改为以下内容的其他警告:

log4j.rootLogger=WARN, CUBRID

log4j.logger.LogTest = INFO, CUBRID
log4j.additivity.LogTest = false

# CUBRID Database
log4j.appender.CUBRID = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.CUBRID.driver = org.postgresql.Driver
log4j.appender.CUBRID.user = postgres
log4j.appender.CUBRID.password = postgres
log4j.appender.CUBRID.URL = jdbc:postgresql://localhost:5432/logs
log4j.appender.CUBRID.sql = INSERT INTO LOGS VALUES('%x','%d{yyyy-MM-dd  HH:mm:ss.SSS}','%C','%p','%m')
log4j.appender.CUBRID.layout=org.apache.log4j.PatternLayout

在这里,我假设这LogTest不是任何包的一部分。如果您已将其放入包中,则更改两行以包含该包(这里我使用my.package

log4j.logger.my.package.LogTest = INFO, CUBRID
log4j.additivity.my.package.LogTest = false

现在,如果您想INFO在包中的所有记录器上应用级别,请执行以下操作:

log4j.logger.my.package = INFO, CUBRID
log4j.additivity.my.package = false

甚至在顶级包上:

log4j.logger.my = INFO, CUBRID
log4j.additivity.my = false
于 2012-10-04T13:09:11.970 回答