# 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日志写入数据库相关推荐

  1. 4、MySQL使用二进制日志还原数据库

    二进制日志中记录了用户对数据库更改的所有操作,如 INSERT 语句.UPDATE 语句.CREATE 语句等.如果数据库因为操作不当或其它原因丢失了数据,可以通过二进制日志来查看在一定时间段内用户的 ...

  2. MySQL使用二进制日志恢复数据库

    一.二进制日志简介 MySQL有不同类型的日志,其中二进制文件记录了所有对数据库的修改,如果数据库因为操作不当或其他原因丢失了数据,可以通过二进制文件恢复. 在my.ini文件中设置了log-bin, ...

  3. mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据

    经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...

  4. 数据写入mysql的方式,FMDB写入大量数据的处理方法

    ios中FMDB在写入本地大量数据的时候为了减少耗时操作的解决方案 今天在做app中插入4000多条数据来保存在本地,刚开始的解决方案是开启异步线程,当然但是但你打印此模块的耗时的时候你会发现耗时竟然 ...

  5. 删除oracle数据库归档日志,Oracle数据库--删除归档日志

    windows操作系统: 最好在删除日志的时候,做好相应的日志或者数据库备份. C:\Documents and Settings\admin>rman 恢复管理器: Release 10.2. ...

  6. mysql 恢复 二进制,mysql通过二进制日志恢复数据库

    一.打开主配置文件 添加以下参数 [root@db1 ~]# vim /etc/my.cnf server_id=6   # 服务id log_bin=/data/binlog/mysql-bin # ...

  7. 吉米_王:MySQL开启log_bin日志,误删数据库时你最后的救命稻草

    前言:今天有个已经毕业1年多的学生回来找我吃饭,说到了他自己在公司干的SB事情,就是误删了公司数据库,不幸中的万幸是公司MySQL开启了log_bin日志,所以没出现不可挽回的损失. 个人感悟:无论是 ...

  8. 使用ApexSQL Log 分析数据库在线日志及数据库备份

    今天遇到一个问题,数据库有几张表的数据被清除了.因为数据是昨天晚上被删除的,当时没有用户访问,所以根据日志备份就可以将数据还原,没有数据损失.但是是谁删除了数据呢? 在2008之前有很多工具都可以分析 ...

  9. thinkph5.1 简单自定义的日志写入方法

    thinkph5.1 简单自定义的日志写入方法 /*** $logname-变量名* $data-变量* PHP_EOL-根据系统环境确定换行(换行)* FILE_APPEND - 追加参数 **/f ...

最新文章

  1. 从一致性hash到ceph crush算法演进图谱(持续更新)
  2. IBM沃森健康项目受挫 人工智能在医疗领域前景几何
  3. opengl绘制长方体线框_OpenGL 绘制长方体 计算机图形学
  4. Selenium+java - 借助autolt完成上传文件操作
  5. VIM配置ActionScript
  6. 移动端H5终端适配方案
  7. 串口UART串行总线协议
  8. CSS Grid 网格布局教程
  9. 面试时如何回答购物车测试步骤?
  10. 深入浅出聊Unity3D优化:从Draw Calls到GC
  11. Hls之播放遇到的坑
  12. 【PDF转换 编辑】 推荐几个好用的pdf相关的网址和软件
  13. 协同过滤算法及python实现
  14. Java中list转map的常用方法
  15. linux打开ppt文件命令,linux命令(文件目录操作).ppt
  16. python绘制散点图和折线图_Python散点图与折线图绘制过程解析
  17. 360网站查杀php专版,360网站木马查杀插件上线:可检测Struts2漏洞
  18. 人物-IT-史玉柱:史玉柱
  19. 计算机专业的就业现状论文,计算机专业就业困境初探论文
  20. 基于yolov3的目标检测与LPRnet字符识别的车牌识别(CCPD2020新能源车牌数据集)

热门文章

  1. Code Valley团队拟在澳洲建立一座价值5000万美元的BCH科技园
  2. 美国国会议员也是“BCH—HODLING”
  3. 比特币现金诞生一周年,BCH的未来在哪?
  4. redis集群部署步骤
  5. cisco中的igrp笔记
  6. 点击按钮出现水波纹动画
  7. java--迭代(一)Iterator和Iterable接口
  8. find中的-print0和xargs中-0的奥妙
  9. oracle的用户账号密码设置
  10. Linux下使用ssh密钥实现无交互备份