Log4j 中阶应用
1. 把重要的业务日志异步批量写入数据库
配置文件示例:
log4j.logger.business=INFO,db
log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.db.BufferSize=10
log4j.appender.db.URL=jdbc:hsqldb:res:/hsqldb/bookstore
log4j.appender.db.driver=org.hsqldb.jdbcDriver
log4j.appender.db.user=sa
log4j.appender.db.password=
log4j.appender.db.sql=INSERT INTO SS_LOG4J_LOG (PRIORITY,LOGDATE,CLASS,METHOD,MSG) VALUES('%p','%d{yyyy-MM-dd HH:mm:ss}','%C','%M','%m')
log4j.appender.db.layout=org.apache.log4j.PatternLayout log4j提供了简单灵活且不影响性能的机制, 将重要业务日志写入数据库,方便日后的查询:
1. 建立一个任意命名的日志记录表,在log4j.properties里设置连接参数,根据刚才建的表名列名,编写插入的语句。
2. BufferSize=10 这样的参数可以让日志异步批量写入,不会影响系统性能。
3. 业务日志log最好不要用原来的package结构,而是在项目里协调一个独立的名字,如business。
Log buzzLog = LogFactory.getLog("business"); 4. 以上功能的演示代码在bookstore example 的OrderManager.java,测试代码在bookstore example的DBLogTest.java。
2.Spring 对log4j的几个增强
个人建议都不要使用。
1. 定时刷新log4j properties文件,无须重启服务器Apply 新的log4j设置。
虽然这是个J2EE Best Practice,但在Spring的JavaDoc里注明了不推荐用于生产环境,因为服务器重启的时候,那条watch thread 不会关闭。
2.将log4j.properties 文件放在WEB-INF/log4j.properties。
这种增强看不出有什么好处,而且如果放WEB-INF,测试的时候就不能输出log4j信息了,除非像Appfuse那样把WEB-INF也设为class path,不过这种设法只适用于Ant脚本的情况。
3. 通过设定{web.root} 这样的系统变量,将log文件放到项目的WEB-INF目录中
log4j.appender.logfile.File=${bookstore.root}/WEB-INF/logs /bookstore.log这样做的好处是路径比较稳定,但如果是war式的部署,每次重新部署的时候就会把原来的log文件全部删掉,遇上jboss 这种不解压war包的应用服务器就更会出错,所以把log文件放WEB-INF/logs不是一个好的选择。
其实logfile路径的规则是,如果不是绝对路径,就以应用运行的目录作为相对路径的根目录。
所以我平时这样定义,一般就指向tomcat 和很多应用服务器的logs目录:
log4j.appender.logfile.File=../logs/bookstore.log这样的缺点是,假设你把Tomcat /bin目录添加到了PATH变量的值中去,并喜欢从Windows开始菜单的运行框里输入"startup.bat"启动Tomcat,这时Log4j 的日志就会被放到C:\Documents And Settings\logs目录中去。
3. 忽略某些类库框架的不必要的信息
控制第三方框架类库的logging level,可以避免满屏都是不重要的info,把真正重要的信息掩盖了。
# Changing the log level to DEBUG when debug
log4j.logger.org.springframework=WARN
# Changing the log level to DEBUG will display SQL Hibernate generated
log4j.logger.org.hibernate=WARN
log4j.logger.org.hibernate.SQL=ERROR
分享到:
相关推荐
log4j logback commong logging jdk logger 测试框架 测试框架 junit easymock testng mockito bug管理 禅道 jira 开发工具 编程工具 eclipse myeclipse idea vi VS webstorm sublime text ...
实例107 使用EventLog组件向本机现有日志中添加条目 155 3.4 FileSystemWatcher组件 156 实例108 使用FileSystemWatcher组件监视系统日志文件是否被更改 157 3.5 HelpProvider组件 158 实例109 使用HelpProvider...
实例107 使用EventLog组件向本机现有日志中添加条目 155 3.4 FileSystemWatcher组件 156 实例108 使用FileSystemWatcher组件监视系统日志文件是否被更改 157 3.5 HelpProvider组件 158 实例109 使用HelpProvider...
156 3.10 DirectoryEntry组件 157 实例109 使用DirectoryEntry组件建立虚拟目录 158 第4章 图形技术 161 4.1 绘制图形 162 实例110 基本图形绘制 162 实例111 在图片中写入文字 163...
实例107 使用EventLog组件向本机现有日志中添加条目 155 3.4 FileSystemWatcher组件 156 实例108 使用FileSystemWatcher组件监视系统日志文件是否被更改 157 3.5 HelpProvider组件 158 实例109 使用HelpProvider...
实例107 使用EventLog组件向本机现有日志中添加条目 155 3.4 FileSystemWatcher组件 156 实例108 使用FileSystemWatcher组件监视系统日志文件是否被更改 157 3.5 HelpProvider组件 158 实例109 使用HelpProvider...
实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理溢出错误 27 实例023 使用typeof关键字获取类的内部结构 28 实例024 使用using关键字有效回收资源 29 实例025 使用is...