锁定老帖子 主题:Log4J实战
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-25
请问LZ,依照你的log4j配置,我也写了一个,为什么会提示log4j:ERROR Could not find value for key log4j.appender.project-util-db.layout这个呢。
其中project-util-db.layout这项在properties里的确没有配置,看你的似乎没有,不知道是不是真的需要配置? |
|
返回顶楼 | |
发表时间:2011-07-25
sokoo108 写道
# 设置其根为 INFO 级别, 处理的 loggerName 为 cons log4j.rootLogger=INFO, cons # 至控制台 log4j.appender.cons=org.apache.log4j.ConsoleAppender log4j.appender.cons.layout=org.apache.log4j.PatternLayout log4j.appender.cons.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss sss} [%p] %r %l [%t] - %m%n ... # 至数据库 log4j.logger.database=INFO, db # 如果为 true 则表示也输出至 根级别, 亦即输出至控制台 log4j.additivity.database=false log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender log4j.appender.db.layout=org.apache.log4j.PatternLayout log4j.appender.db.layout.conversionPattern=%m log4j.appender.db.URL=... log4j.appender.db.driver=... log4j.appender.db.user=... log4j.appender.db.password=... log4j.appender.db.sql=INSERT INTO ... VALUES('%X{id}'... 用的时候: private Logger log = Logger.getLogger(getClass()); private static final Logger dbLog = Logger.getLogger("database"); ... // 使用 dbLog 输出的日志会记录至数据库, log 输出的会记录至控制台 MDC.put("id", "XXX"); dbLog.info("..."); MDC.remove("id"); LZ 发关于 log4j 的帖子很频繁啊... |
|
返回顶楼 | |
发表时间:2011-07-25
liu.anxin 写道 sokoo108 写道
# 设置其根为 INFO 级别, 处理的 loggerName 为 cons log4j.rootLogger=INFO, cons # 至控制台 log4j.appender.cons=org.apache.log4j.ConsoleAppender log4j.appender.cons.layout=org.apache.log4j.PatternLayout log4j.appender.cons.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss sss} [%p] %r %l [%t] - %m%n ... # 至数据库 log4j.logger.database=INFO, db # 如果为 true 则表示也输出至 根级别, 亦即输出至控制台 log4j.additivity.database=false log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender log4j.appender.db.layout=org.apache.log4j.PatternLayout log4j.appender.db.layout.conversionPattern=%m log4j.appender.db.URL=... log4j.appender.db.driver=... log4j.appender.db.user=... log4j.appender.db.password=... log4j.appender.db.sql=INSERT INTO ... VALUES('%X{id}'... 用的时候: private Logger log = Logger.getLogger(getClass()); private static final Logger dbLog = Logger.getLogger("database"); ... // 使用 dbLog 输出的日志会记录至数据库, log 输出的会记录至控制台 MDC.put("id", "XXX"); dbLog.info("..."); MDC.remove("id"); LZ 发关于 log4j 的帖子很频繁啊... 上周花了几天时间做这个,所以就顺便总结出来一些东西 |
|
返回顶楼 | |
发表时间:2011-07-25
linginfanta 写道 我也考虑过filter,LZ有木有觉得对应用性能有影响?
最终,我还是放弃了这种方案,采取网卡抓包来记录访问日志。 请教下,我理解的转包就是想到与tomcat里面配置,他可以自动记录相关的ip 访问时间什么的 但是当我要记录不同级别的用户访问怎么做呢(除了在fiter里面可以判断)? 现在做的这个log4j配置性强,根据需求可以很好的扩展 |
|
返回顶楼 | |
发表时间:2011-07-25
zshui_2007 写道 JREBEL 就不用让服务器做热部署启动了,比较方便;
log4j配置到数据库是很方便的,支持一下,和具体的使用场景有关。尽量使用大家约 定俗成的东西,不要做重复无谓的搭建轮子。 用log4j关键是在项目中集成一个根据需求配置的记录模块 比如:项目只要数据库里面记录不要文件记录,那么我改下log4j的配置文件就可以了 需求再改变--记录vip访问行为,我再配个fiter,如果fiter太多影响到性能,我就配置输出文件,然后写job扫描进入数据库 |
|
返回顶楼 | |
发表时间:2011-07-25
sokoo108 写道 请问LZ,依照你的log4j配置,我也写了一个,为什么会提示log4j:ERROR Could not find value for key log4j.appender.project-util-db.layout这个呢。
其中project-util-db.layout这项在properties里的确没有配置,看你的似乎没有,不知道是不是真的需要配置? 确实不需要,它是制定输出格式,现在输入数据库,配置对应project-util-db.sql就可以了 |
|
返回顶楼 | |