我使用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()等编写我自己写的东西。 怎么做?
答案 0 :(得分:3)
这可以通过调整logLevel来完成。尝试更改像这样的值
log4j.rootLogger=WARN, CUBRID
答案 1 :(得分:2)
您必须将日志级别更改为DEBUG
以外的其他级别。
log4j.rootLogger=WARN, CUBRID
本教程非常全面:Short introduction to log4j。
要仅记录您自己的信息消息,但允许&gt; = 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