log4j配置好后,日志不能够输出到数据库中,求指教

资源文件中的内容如下:

[code="java"]
log4j.properties

log4j.rootLogger=INFO,stdout

log4j.logger.org.springframework.web.servlet=INFO,db

log4j.logger.org.springframework.beans.factory.xml=INFO

log4j.logger.com.neam.stum.user=INFO,db

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] - - <%m>%n

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender

log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/exppower.log

log4j.appender.logfile.DatePattern=.yyyy-MM-dd

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] wang- <%m>%n

########################

JDBC Appender

#######################

#log4j.logger.business=INFO,db

#log4j.appender.db=com.neam.commons.MyJDBCAppender

log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.BufferSize=10

log4j.appender.db.sqlname=log

log4j.appender.db.driver=com.mysql.jdbc.Driver
log4j.appender.db.URL=jdbc:mysql://172.20.92.139:3306/test?characterEncoding=UTF-8

log4j.appender.db.user=root

log4j.appender.db.password=123456

log4j.appender.db.sql=insert into log(username,class,methodname,createtime,logLevel,msg) values ('%X{username}','%C','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')

log4j.appender.db.layout=org.apache.log4j.PatternLayout

[/code]

运行时的测试类如下:

[code="java"]

import java.net.URL;

import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
import org.apache.log4j.PropertyConfigurator;

public class TestClass {

public static void main(String[] args) {
    URL url = TestClass.class.getClassLoader().getResource("log4j.properties");
    MDC.put("username", "username");

    PropertyConfigurator.configure(url.getPath());
    Logger logger  =  Logger.getLogger(TestClass.class);
    logger.debug( " debug " );
    logger.error( " error " );
    logger.info(" info ");
}

}

[/code]

3个回答

Logger logger = Logger.getLogger(TestClass.class);

需要定义
log4j.logger.TestClass=INFO,db

henushang
孤独人生 之所以要把这个采纳为最佳答案,是因为后来遇到很多的问题都是由这位哥给我解决的。其他的答案也都是很有用的。谢谢大家了
接近 8 年之前 回复

哥们,参见 java log4j日志 写入数据库
[url]http://demojava.iteye.com/blog/1067627[/url]
有demo提供下载。

iteye_5246
iteye_5246 把附件下载,修改属性文件改数据库相关属性。。。新建个表就 测试下。
接近 8 年之前 回复
henushang
孤独人生 关键是,现在我拿过来还是不行啊。。。。
接近 8 年之前 回复
iteye_5246
iteye_5246 Ok了。记得结贴
接近 8 年之前 回复
henushang
孤独人生 谢了,我试试
接近 8 年之前 回复

你的这句[code="java"]log4j.logger.org.springframework.web.servlet=INFO,db[/code]表明要在web容器db才会写入数据库,而不是在main方法中

henghanan
henghanan 根据你的情况,也就是log4j.logger.org.springframework.web.servlet=INFO,db log4j.logger.org.springframework.beans.factory.xml=INFO 去掉,把db写到log4j.rootLogger 也就是log4j.rootLogger=INFO,stdout,db
接近 8 年之前 回复
henghanan
henghanan web容器中测试:http://www.myexception.cn/database/422291.html main方法中测试:http://blog.csdn.net/eidolon8/article/details/5971903
接近 8 年之前 回复
henushang
孤独人生 哦,我不知道每个配置是什么作用,怎么样设置才可以在main方法中写入到数据库呢?
接近 8 年之前 回复
立即提问
相关内容推荐