log4j输出到数据库(输出自定义参数、分级保存)
转载自: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.properties配置 log4j.rootLogger = info,stdout,D,E,A3 log4j.appender.Threshold=info ### 控制台输出### ...
- log4j 输出到 数据库
# LOG4J配置 log4j.rootCategory=ERROR,stdout,errorfile,jdbc # 控制台输出 log4j.appender.stdout=org.apache.lo ...
- log4j.xml配置,包含自定义log4j日志级别及输出日志到不同文件
一.配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configura ...
- 使用log4j配置不同文件输出不同内容
敲代码中很不注意写日志,虽然明白很重要.今天碰到记录日志,需要根据内容分别输出到不同的文件. 参考几篇文章: 感觉最详细:http://blog.csdn.net/azheng270/article/ ...
- Asp.Net Core NLog 将日志输出到数据库以及添加LayoutRenderer的支持
在这之前打算用Apache的Log4Net,但是发现其AdoNetAppender方法已经不存在了,无法使用配置文件直接输出到数据库了,因此我便改用了NLog框架. 一.对项目添加NLog 通过Nug ...
- 《手把手教你》系列基础篇(八十七)-java+ selenium自动化测试-框架设计基础-Log4j 2实现日志输出-上篇(详解教程)
1.简介 Apache Log4j 是一个非常古老的日志框架,并且是多年来最受欢迎的日志框架. 它引入了现代日志框架仍在使用的基本概念,如分层日志级别和记录器. 2015 年 8 月 5 日,该项目管 ...
- log4net 控制台和文件和数据库输出三种方式
1.新建console应用项目SendEvaluateDataToProvinceConsole 2.选择SendEvaluateDataToProvinceConsole项目右键 选择 管理NuGe ...
- Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出
1. 第一个问题:时间少了8小时 Log4j 输出的日志中,时间比系统时间少了8小时,但是 eclipse 控制台输出的日志的时间却是对的. log4j配置如下: #all logger output ...
- log4net:保存自定义参数到数据库
log4net:保存日志到数据库 自定义参数 新建一个类,继承于PatternLayoutConverter public class CustomerPatternConverter : Patte ...
随机推荐
- Java程序员自我介绍
有关Java程序员的面试自我介绍范文(一) 我叫XXX,今年21岁,毕业于XX解放军信息工程大学计算机科学与技术专业,拥有扎实的Core Java基础,良好的编程风格;熟悉JSP+Servlet+Ja ...
- [C++] Variables and Basic Types
Getting Started compile C++ program source $ g++ -o prog grog1.cc run C++ program $ ./prog The libra ...
- jQuery实现仿京东商城图片放大镜
效果图: 不废话直接上代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- HTML5form表单的相关知识总结
首先在介绍HTML5form表单的新增内容之前,我总结了一下HTML的form表单的内容. <!DOCTYPE html> <html lang="en"> ...
- NProgress.js加载进度插件的简单实用方法
NProgress.js 说明: NProgress是基于jquery的,且版本要 >1.8 下载地址: https://github.com/rstacruz/nprogress API: N ...
- 20172330 2017-2018-1 《Java程序设计》第九周学习总结
20172330 2017-2018-1 <程序设计与数据结构>第九周学习总结 教材学习内容总结 本周的学习包括两章内容,分别为异常和递归. 异常 错误和异常都是对象,代表非正常情况或者无 ...
- ACM 第五天
匈牙利算法(二分图匹配) C - Courses Consider a group of N students and P courses. Each student visits zero, one ...
- IIS7,IIS7.5 URL重写模块工具
URL 重写模块 2.0 提供基于规则的重写机制,可在 Web 服务器处理请求的 URL 之前对其进行更改,以及在向 HTTP 客户端提供响应内容之前修改响应内容. 注意:使用环境为IIS7.0(x6 ...
- 【week2】燃尽图
燃尽图(burn down chart)是在项目完成之前,对需要完成的工作的一种可视化表示.燃尽图有一个Y轴(工作)和X轴(时间).理想情况下,该图表是一个向下的曲线,随着剩余工作的完成,“烧尽”至零 ...
- zabbix概念
Zabbix是一个企业级的.开源的.分布式监控解决方案. Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题 ...