使用log4j把日志写到mysql数据库
log4j可以支持将log输出到文件,数据库,甚至远程服务器,本教程以mysql数据库为例来讲解:
作者:Jesai
没有伞的孩子,只能光脚奔跑!
1.数据库设计
数据库表
表4-1日志表(log)
|
字段名 |
字段解释 |
数据类型 |
数据 长度 |
是否为空 |
是否为主键 |
是否为外键 |
|
id |
日志编号 |
bigint |
20 |
否 |
是 |
否 |
|
create_time |
创建时间 |
datetime |
否 |
否 |
否 |
|
|
logs |
日志内容 |
varchar |
200 |
否 |
否 |
否 |
数据库创建:
Create database log;

切换数据库:
Use log;
创建表:
CREATE TABLE `log` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`create_time` datetime NOT NULL,
`logs` varchar(200) NOT NULL,
primary key(`id`)
)
ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
2.项目准备
新建一个java项目 log4j_write_mysql:
File->new ->java Project:

新建一个测试类Test:

新建一个lib文件,导入log4j的包:

配置log4j配置文件
log4j.rootLogger=ERROR,appender1,appender2 log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n log4j.appender.appender2=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.appender2.driver=com.mysql.jdbc.Driver
log4j.appender.appender2.URL=jdbc:mysql://localhost:3306/log?useUnicode=true&characterEncoding=UTF-8
log4j.appender.appender2.user=root
log4j.appender.appender2.password=137151
log4j.appender.appender2.sql=insert into zuidaima_log (create_time,log) VALUES ('%d{yyyy-MM-dd hh:mm:ss}', '%c %p %m %n')
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
测试类编码:
/**
*
*/
package log4j_write_mysql; import org.apache.log4j.Logger; /**
*
* 项目名称:log4j_write_mysql
* 类名称:Test
* 类描述:
* 创建人:邓家海
* 创建时间:2015年5月28日 上午1:03:01
* 修改人:deng
* 修改时间:2015年5月28日 上午1:03:01
* 修改备注:
* @version
*
*/ public class Test {
public static Logger log = Logger.getLogger(Test.class); public static void main(String[] args) {
try {
throw new Exception("最代码错误log");
} catch (Exception e) {
log.error(e.getMessage());
}
} }
3:运行结果:
控制台信息:

数据库信息:

改进,整合控制台、日志文件、数据库三个输出:

配置文件代码:
log4j.rootLogger=ERROR,appender1,appender2,log2 log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.Target=System.err
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n log4j.appender.appender2=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.appender2.driver=com.mysql.jdbc.Driver
log4j.appender.appender2.URL=jdbc:mysql://localhost:3306/log?useUnicode=true&characterEncoding=UTF-8
log4j.appender.appender2.user=root
log4j.appender.appender2.password=137151
log4j.appender.appender2.sql=insert into log (create_time,logs) VALUES ('%d{yyyy-MM-dd hh:mm:ss}', '%c %p %m %n')
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout log4j.appender.log2=org.apache.log4j.FileAppender
log4j.appender.log2.file=log.log
log4j.appender.log2.layout=org.apache.log4j.PatternLayout
log4j.appender.log2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n
如需要源代码,请发帖索要:
http://tieba.baidu.com/f?kw=%C8%ED%BC%FE%C6%B5%B5%C0&fr=home
使用log4j把日志写到mysql数据库的更多相关文章
- 使用log4net无法将日志记录插入mysql数据库解决办法
写在前面 今天没事研究了下,将日志文件写入mysql数据库,因为新公司用的数据库也是mysql,项目中需要将日志信息写入数据库,没办法,就研究了下.在使用过程中遇到一个很蛋疼的问题.最后解决了,郁闷了 ...
- 利用日志文件恢复MYSQL数据库
利用日志文件恢复MYSQL数据库 650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic ...
- log4net引用了Mysql.Data.dll,但是就是不能写到mysql数据库的解决办法
这两天遇到log4net写日志到mysql数据库中,有时候在A项目中可以,有时候B项目就有问题,有时候测试环境没问题,到正式部署环境又出问题,经过两天的煎熬,终于理清楚了其中的头绪. 1.配置现状 c ...
- log4net日志信息 插入 mysql数据库?
log4net配置文件如下: <!--插入数据库--> <appender name="AdoNetAppender_MySql" type="log4 ...
- ELK收集tomcat访问日志并存取mysql数据库案例
这个案例中,tomcat产生的日志由filebeat收集,然后存取到redis中,再由logstash进行过滤清洗等操作,最后由elasticsearch存储索引并由kibana进行展示. 1.配置t ...
- 导入日志文件到mysql数据库表
#!/bin/bash #**************************************************************************** #***将/usr/ ...
- 使用独立的log4net.config文件配置log4net,将日志记录到Mysql数据库【原创】
开发环境: VS2013, Asp.Net MVC 4.0, .Net Framework 4.0, Log4net 1.2.13.0, Mysql.Data.dll,6.8.3.0 设置步骤: 1. ...
- 重新学习MySQL数据库10:MySQL里的那些日志们
重新学习MySQL数据库10:MySQL里的那些日志们 同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志, ...
- (转)Mysql数据库之Binlog日志使用总结
使用mysqlbinlog提取二进制日志 原文:http://blog.csdn.net/leshami/article/details/41962243 MySQL binlog日志记录了MySQL ...
随机推荐
- 原生Js 实现等比缩放页面
针对1920*1080 分配率缩放 window.addEventListener('load', adaptation); window.addEventListener('resize', ada ...
- Vue与React比较
与React 相似: (1)虚拟DOM(Virtual DOM) 虚拟DOM的诞生是基于:改变真实的DOM状态远比改变一个JS对象的花销要大的多. 虚拟DOM是一个映射真实DOM的JS对象,当有变化产 ...
- H3C查看保存的配置文件
- CodeForces - 1189 E.Count Pairs (数学)
You are given a prime number pp, nn integers a1,a2,…,ana1,a2,…,an, and an integer kk. Find the numbe ...
- 阿里云 CentOS8 Repo
# CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # upda ...
- 深入Oracle的left join中on和where的区别详解
-- from http://blog.itpub.net/30175262/viewspace-1472060/ 今天遇到一个求某月所有天数的统计结果,如果某日的结果是0也需要显示出来,即: 日期 ...
- 我的 2019 年 Python 文章榜单
现在是 2020 年的第一天,我相信从昨天开始,各位的信息流里肯定充斥了各式各样的年度盘点/回顾/总结/记录之类的内容.虽然来得稍晚了,但我还是想给诸位送上这一篇文章. 我将在本文中列出自己于 201 ...
- poj1737-----这题有毒
这题有毒,不取模还会溢出,我哭了 <进阶指南>p337动态规划 公式就是个这了,代码就不贴了,反正是错的,用java算了
- C# 中的IComparable和IComparer
前言 在开发过程中经常会遇到比较排序的问题,比如说对集合数组的排序等情况,基本类型都提供了默认的比较算法,如string提供了按字母进行排序,而int整数则是根据整数大小进行排序.但是在引用类型中(具 ...
- 网络OSI七层架构与TCP四层架构的应用与区别
1.OSI七层网络模型介绍 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了 ...