sadkilo 2018-09-05 10:12 采纳率: 0%
浏览 530
已结题

log4j 输出到数据库的BUG

[概述]
项目中使用log4j输出到数据库,记录用户访问系统的次数
[环境说明]
spring开发
使用的jar包
log4j-1.2.17.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar
[问题描述]
设置缓存10条记录再插入数据库
注释输出到控制台
于是就出现,插入的10条记录的[方法名],[类名]都重复的问题(最后一次的访问记录覆盖前面9次的记录)
图片说明

[情况二]
开启输出到控制台的功能, 数据库插入的记录就会正确
图片说明

[log4j配置文件]

log4j.rootLogger=debug,db,stdout
log4j.logger.org.springframework=error
log4j.logger.com.mchange=error
## 输出到数据库
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.Threshold=info
log4j.appender.db.layout=org.apache.log4j.PatternLayout
log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n
log4j.appender.db.BufferSize=10
log4j.appender.db.driver=com.mysql.jdbc.Driver
log4j.appender.db.URL=jdbc\:mysql\://127.0.0.1\:3306/ztyx?useUnicode\=true&characterEncoding\=utf8
log4j.appender.db.user=root
log4j.appender.db.password=pass

log4j.appender.db.sql=insert into t_user_log (ACTION_DATE,ACTION_USER,CLASS,METHOD,RESULT,REM) VALUES ('%d{yyyy-MM-dd HH:mm:ss}','%X{user}','%C{1}','%M','%X{rs}','%m')

## 输出到控制台
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=info
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss,SSS} [%p] {%t} at %c.%M(%c{1}.java:%L)%n%m%n

大家有没有遇到这样的情况, 为什么缓存输出到数据库会出现覆盖前面的值? 这应该是log4j的bug吧

更诡异的是,同时开启输出到控制台的配置, 输出到数据库就正常了

  • 写回答

3条回答 默认 最新

  • _zming 2018-09-05 10:45
    关注

    不是bug,把layout相关配置去掉就行了
    log4j.appender.db.layout=org.apache.log4j.PatternLayout
    log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n
    只需要配置log4j.appender.db.sql就够了

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器