log4j记录不同的日志_javaWeb 使用log4j 记录系统日志 (记录保存到数据库)

问题:项目中要求将登陆用户进行的操作保存到数据库,以供查询等。经过了解以及网上查询,决定使用log4j日志文件。

使用步骤:

一:在lib目录下,导出使用log4j 日志文件要使用的jar包; 在classpath目录下(即:项目的src目录下),新建一个日志文件,统一命名为:log4j.properties;

二:根据数据库中的字段,在上面新建的日志文件中,进行参数配置;

1、当数据库中的字段没有登录者的相关信息如:userId、userName时,日志文件中的配置如下:

#level log4j建议使用4个级别,优先级从高到低是:ERROR、WARN、INFO、DEBUG

log4j.rootLogger=WARN,DATABASE

#log4j.addivity.org.apache=true

#用于数据库(MySql 数据库)

log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender

log4j.appender.DATABASE.URL=jdbc:mysql://172.16.1.223:3306/lgisp?characterEncoding=utf8

log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver

log4j.appender.DATABASE.user=root

log4j.appender.DATABASE.password=lgisp123\#

log4j.appender.DATABASE.sql= INSERT INTO lgisp_config_log(LOG_LEVEL,LOG_TYPE,OPERATE_NAME,OPERATE_TIME,OPERATE_DES) VALUES('%p','%p','%c','%d{yyyy-MM-dd HH:mm:ss}','%m')

2、当数据库中的字段涉及到登录者的相关信息时,这时,我们要使用log4j 为我们提供的MDC(MDC是log4j中非常有用的类,用于存储应用程序中的上下文信息 context information,从而可以在log中使用这些上下文信息。MDC内部使用了类似Map 的机制来存储信息,上下文信息也是每个线程独立的存储,所不同的是信息都是以它们的key值存储在map 中,相对应的方法是:MDC.put(key,value);MDC.remove(key);MDC.get(key);在配置PatternLayout时,使用::%x{key}来输出对应的value。)

在程序中适合的位置,我们可以使用log4j的MDC保存登录者的相关信息:

MDC.put("userId", DEFAULT_USERID);

MDC.put("userName",DEFAULT_Name );

然后:把日志文件中的:log4j.appender.DATABASE.sql语句 写成:log4j.appender.DATABASE.sql= INSERT INTO lgisp_config_log(LOG_LEVEL,LOG_TYPE,OPERATE_NAME,OPERATE_TIME,OPERATE_ENDTIME,OPERATE_USER_ID,OPERATE_USER_NAME,OPERATE_DES) VALUES('%p','%p','%c','%d{yyyy-MM-dd HH:mm:ss}','%d{yyyy-MM-dd HH:mm:ss}','%X{userId}','%X{userName}','%m')

%m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

分享到:

2012-10-12 09:34

浏览 4968

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值