log4j写入mysql数据库_log4j日志写入数据库
# log4j写入数据库
### 前言
-----------------------------
log4j是写入日志到控制台和文件很常见,但是写入到数据库不多见.
做性能测试写入到数据库,统计方便些.
### POM
-----------------------------
```
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.yctxkj
logtest
0.0.1-SNAPSHOT
jar
logtest
http://maven.apache.org
UTF-8
junit
junit
4.11
test
org.hamcrest
hamcrest-core
1.3.RC2
mysql
mysql-connector-java
5.1.35
log4j
log4j
1.2.17
compile
maven-compiler-plugin
2.4
1.8
1.8
true
```
### 配置文件
-----------------------------
```
log4j.rootLogger=INFO,console,file,database
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[KMS] %d{yyyy-MM-dd HH\:mm\:ss.SSS} [%5p] (%F\:%L) - %m%n
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.File=/data/logs/logtest.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss.SSS} [%5p] (%F\:%L) - %m%n
log4j.logger.freemarker=FATAL
### \u628a\u65e5\u5fd7\u4fe1\u606f\u5199\u5165\u5230\u6570\u636e\u5e93###
log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.database.driver=com.mysql.jdbc.Driver
log4j.appender.database.URL=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
log4j.appender.database.user=root
log4j.appender.database.password=123456
log4j.appender.database.sql=insert into log (class,lineno,method,createtime,level,message) VALUES ('%F','%L','%M','%d{yyyy-MM-dd hh:mm:ss.SSS}','%p','%m')
log4j.appender.database.layout=org.apache.log4j.PatternLayout
```
### 代码
-----------------------------
```
package com.yctxkj.logtest;
import org.apache.log4j.Logger;
/**
* Hello world!
*
*/
public class App
{
private static Logger logger = Logger.getLogger(App.class);
public static void main( String[] args )
{
System.out.println( "Hello World!" );
logger.info("我很困啊啊,想睡觉");
logger.warn("this is warning message");
}
}
```
### 数据库脚本
-----------------------------
```
-- ----------------------------
-- Table structure for log
-- ----------------------------
DROP TABLE IF EXISTS `log`;
CREATE TABLE `log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`level` varchar(8) NOT NULL,
`class` varchar(45) DEFAULT NULL,
`lineno` int(11) DEFAULT NULL,
`message` text,
`method` varchar(45) DEFAULT NULL,
`createtime` datetime(3) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COMMENT='log4j日志表';
```
### 效果截图
-----------------------------
- ![截图]()
### 日志加入自定义字段
-----------------------------
在使用log4j日志的时候,有时需要在日志中加入自定义字段信息,
例如在日志中加入登录用户的信息等,这时就可以使用org.apache.log4j.MDC来实现该功能:
1.在Action的方法中,直接使用
```
MDC.put("username",getUserInfo().getName()); //getUserInfo()获取登录用户信息
```
2.在log4j的配置文件中,
```
%d{yyyy/MM/dd HH:mm:ss.sss} [%X{username}] [%-5p] %c - %m%n
```
3.日志文件结果:
`2013/11/29 18:00:25.025 [test] [ERROR] com.test.TestAction //红色test即为加入的用户信息`
log4j写入mysql数据库_log4j日志写入数据库相关推荐
- 4、MySQL使用二进制日志还原数据库
二进制日志中记录了用户对数据库更改的所有操作,如 INSERT 语句.UPDATE 语句.CREATE 语句等.如果数据库因为操作不当或其它原因丢失了数据,可以通过二进制日志来查看在一定时间段内用户的 ...
- MySQL使用二进制日志恢复数据库
一.二进制日志简介 MySQL有不同类型的日志,其中二进制文件记录了所有对数据库的修改,如果数据库因为操作不当或其他原因丢失了数据,可以通过二进制文件恢复. 在my.ini文件中设置了log-bin, ...
- mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据
经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...
- 数据写入mysql的方式,FMDB写入大量数据的处理方法
ios中FMDB在写入本地大量数据的时候为了减少耗时操作的解决方案 今天在做app中插入4000多条数据来保存在本地,刚开始的解决方案是开启异步线程,当然但是但你打印此模块的耗时的时候你会发现耗时竟然 ...
- 删除oracle数据库归档日志,Oracle数据库--删除归档日志
windows操作系统: 最好在删除日志的时候,做好相应的日志或者数据库备份. C:\Documents and Settings\admin>rman 恢复管理器: Release 10.2. ...
- mysql 恢复 二进制,mysql通过二进制日志恢复数据库
一.打开主配置文件 添加以下参数 [root@db1 ~]# vim /etc/my.cnf server_id=6 # 服务id log_bin=/data/binlog/mysql-bin # ...
- 吉米_王:MySQL开启log_bin日志,误删数据库时你最后的救命稻草
前言:今天有个已经毕业1年多的学生回来找我吃饭,说到了他自己在公司干的SB事情,就是误删了公司数据库,不幸中的万幸是公司MySQL开启了log_bin日志,所以没出现不可挽回的损失. 个人感悟:无论是 ...
- 使用ApexSQL Log 分析数据库在线日志及数据库备份
今天遇到一个问题,数据库有几张表的数据被清除了.因为数据是昨天晚上被删除的,当时没有用户访问,所以根据日志备份就可以将数据还原,没有数据损失.但是是谁删除了数据呢? 在2008之前有很多工具都可以分析 ...
- thinkph5.1 简单自定义的日志写入方法
thinkph5.1 简单自定义的日志写入方法 /*** $logname-变量名* $data-变量* PHP_EOL-根据系统环境确定换行(换行)* FILE_APPEND - 追加参数 **/f ...
最新文章
- 从一致性hash到ceph crush算法演进图谱(持续更新)
- IBM沃森健康项目受挫 人工智能在医疗领域前景几何
- opengl绘制长方体线框_OpenGL 绘制长方体 计算机图形学
- Selenium+java - 借助autolt完成上传文件操作
- VIM配置ActionScript
- 移动端H5终端适配方案
- 串口UART串行总线协议
- CSS Grid 网格布局教程
- 面试时如何回答购物车测试步骤?
- 深入浅出聊Unity3D优化:从Draw Calls到GC
- Hls之播放遇到的坑
- 【PDF转换 编辑】 推荐几个好用的pdf相关的网址和软件
- 协同过滤算法及python实现
- Java中list转map的常用方法
- linux打开ppt文件命令,linux命令(文件目录操作).ppt
- python绘制散点图和折线图_Python散点图与折线图绘制过程解析
- 360网站查杀php专版,360网站木马查杀插件上线:可检测Struts2漏洞
- 人物-IT-史玉柱:史玉柱
- 计算机专业的就业现状论文,计算机专业就业困境初探论文
- 基于yolov3的目标检测与LPRnet字符识别的车牌识别(CCPD2020新能源车牌数据集)