log4j输出到数据库(输出自定义参数、分级保存)
来源:互联网 发布:mac 看图软件 编辑:程序博客网 时间:2024/06/06 00:50
转载自:http://wallimn.iteye.com/blog/1525819
Log4J日志输出到数据库中,且保存些用户自定义的参数,如用户ID,且配置仅输出指定级别的日志。
配置文件如下:
log4j.rootLogger=DEBUG,logfile,stdout
log4j.logger.SYSTEM = INFO,JDBC
#也可以使用包名或类名,这样可以用JAVA的class来初始化logger
log4j.logger.com.wallimn.test=INFO,JDBC
#不继承父appender的配置,如果取消注释,rootCategory指定的appender将不再输出
#log4j.additivity.SYSTEM=false
#stdout configure
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= %d %5p [%c] - %m%n
#logfile configure
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=./wallimn.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern= %d{yyyy MM dd HH:mm:ss} %5p [%c] - %m%n
#JDBC configure
log4j.appender.JDBC=org.apache.log4j.jdbc.JDBCAppender
#此处优先级高于log4j.logger.SYSTEM指定级别,
log4j.appender.JDBC.Threshold=INFO
log4j.appender.JDBC.driver=oracle.jdbc.driver.OracleDriver
log4j.appender.JDBC.URL=jdbc:oracle:thin:@127.0.0.1:1521:swdb
log4j.appender.JDBC.user=scott
log4j.appender.JDBC.password=tiger
log4j.appender.JDBC.layout=org.apache.log4j.PatternLayout
log4j.appender.JDBC.sql=INSERT INTO XT_SYS_LOG(USERID,LOGTIME,LOGLEVEL,LOGACTION,MESSAGE)VALUES('%X{userId}',sysdate,'%p','%l','%m')
log4j.appender.JDBC.filter.F1=org.apache.log4j.varia.LevelRangeFilter
#只接收ERROR级别的日志,这是很有用的技术
#这功能在1.2.8版本时,不支持这样配置,好像仅支持XML方式配置,我试了好多次才发现这个问题
#可多个Filter组合共同限制
log4j.appender.JDBC.filter.F1.levelMin=ERROR
log4j.appender.JDBC.filter.F1.levelMax=ERROR
log4j.appender.JDBC.filter.F1.acceptOnMatch=true
建测试表的SQL:
create table xt_sys_log(
userid number,
logtime date,
logaction varchar2(100),
loglevel varchar2(100),
message varchar2(255));
测试类:
- package com.wallimn.test;
- import org.apache.log4j.Logger;
- import org.apache.log4j.MDC;
- import junit.framework.TestCase;
- public class Log4JTest extends TestCase {
- public void testLog1(){
- Logger logger = Logger.getLogger("SYSTEM");
- //Logger logger = Logger.getLogger(Log4JTest.class);
- MDC.put("userId", "11");
- logger.fatal("test_fatal");
- logger.error("test_Error");
- logger.warn("test_warn");
- logger.info("test_Info");
- logger.debug("test_debug");
- MDC.remove("userId");
- }
- }
控制台输出:
2012-05-12 22:08:01,156 FATAL [SYSTEM] - test_fatal
2012-05-12 22:08:01,156 ERROR [SYSTEM] - test_Error
2012-05-12 22:08:01,421 WARN [SYSTEM] - test_warn
2012-05-12 22:08:01,421 INFO [SYSTEM] - test_Info
数据库记录查询:
SQL> select userid,loglevel,message from xt_sys_log;
USERID LOGLEVEL MESSAGE
---------- -------------------- --------------------
11 ERROR test_Error
注意:仅记录了一条日志。
- log4j输出到数据库(输出自定义参数、分级保存)
- log4j输出到数据库(输出自定义参数、分级保存)
- log4j日志分级输出文件
- log4j 分级别输出日志
- log4j日志分级别输出到不同文件
- log4j日志输出分级别或模块到不同文件
- log4j日志输出分级别或模块到不同文件
- log4j 日志输出到数据库
- log4j配置文件,xml格式,分级输出(转)
- Log4j 分级别过滤输出日志文件
- Log4j学习。输出日志到数据库。
- 把log4j日志信息输出到数据库
- log4j将日志输出到数据库
- log4j将日志输出到数据库
- log4j日志按分模块和分级输出到不同的文件中去
- log4j自定义日志等级;数据库缓冲池存储到数据库;数据库和输出到文件终端分离;发送邮件
- log4j输出到控制台
- 自定义Appender ,实现输出log4j日志到GUI
- 罗大柚OpenGL ES教程系列_LessonThree(Part 1)_使用Touch来实现旋转
- 离职 需要注意三个问题
- rcp(插件开发) 如何使用插件下的Log日志
- HDU 4285
- 超链接在web开发中使用总结
- log4j输出到数据库(输出自定义参数、分级保存)
- An Introduction to Hardware-Assisted Virtual Machine (HVM) Rootkits
- java基础学习之 多线程 概述
- JDK安装并检测
- JAVA完全控制Oracle中BLOB、CLOB说明
- asp.net web应用程序后台弹出提示框代码
- Linux常用命令英文全称与汉语解释
- 面试 需要注意三种公司
- spring框架学习(四)自动装配