使用log4j把日志写到mysql数据库

log4j可以支持将log输出到文件,数据库,甚至远程服务器,本教程以mysql数据库为例来讲解:

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

时间: 2024-08-08 01:52:00

使用log4j把日志写到mysql数据库的相关文章

使用log4net无法将日志记录插入mysql数据库解决办法

写在前面 今天没事研究了下,将日志文件写入mysql数据库,因为新公司用的数据库也是mysql,项目中需要将日志信息写入数据库,没办法,就研究了下.在使用过程中遇到一个很蛋疼的问题.最后解决了,郁闷了半天.这里做一下记录,以免再犯. 之前写个这方面的文章,关于配置信息,可参考我的这篇文章:Log4Net日志记录两种方式 解决办法 问题就出在我直接将log4net写入数据库的配置文件log4net.config直接复制过来在项目中使用了,当然是修改了连接字符串,提供程序等与mysql相关的配置.配

log4net引用了Mysql.Data.dll,但是就是不能写到mysql数据库的解决办法

这两天遇到log4net写日志到mysql数据库中,有时候在A项目中可以,有时候B项目就有问题,有时候测试环境没问题,到正式部署环境又出问题,经过两天的煎熬,终于理清楚了其中的头绪. 1.配置现状 config文件中log4net配置节: <!--以下是log4net配置--> <log4net> <root> <level value="ALL" /> <appender-ref ref="AdoNetAppender&

binlog+审计日志 定位mariadb(mysql)数据库特定sql

最近线上数据莫名的丢数据,故进行sql定位,定位线上数据为何丢失,最后定位到具体某开发程序. 审计日志:记录数据库所有信息,故会有巨大的日志,而且参数设置审计日志大小,会进行审计日志轮换分割. 1.基于审计日志这个特点,业务提出问题后,要及时发现问题解决问题. 线上业务日志为512M一个日志,共10个.大约能记录8个小时左右的数据库访问信息. 2.binlog:binlog是记录mysql数据库变化的信息,记录增删改等信息. 结合以上两点:可以binlog定位问题sql,通过审计日志定位操作DB

将Apache访问日志记录到Mysql数据库中

环境 操作系统:CentOS 步骤 1.下载源码 下载地址: https://packages.debian.org/jessie/libapache2-mod-log-sql-mysql 2.configure ./configure --with-apxs=/usr/local/bin/httpd/bin/apxs --with-mysql=/usr/local/bin/mariadb 注意:一定要检查configure完成有没有出现Mysql Driver ----------------

log4net日志信息 插入 mysql数据库?

log4net配置文件如下: <!--插入数据库--> <appender name="AdoNetAppender_MySql" type="log4net.Appender.ADONetAppender"> <bufferSize value="1"/> <connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.

使用独立的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.在站点根目录下,创建一个log4net.config的XML文件.(文件名称可以任意,我们这里叫做log4net.config) <?xml version="1.0" encoding="utf-8"?><configuration> <

导入日志文件到mysql数据库表

#!/bin/bash #**************************************************************************** #***将/usr/local/data/目录下每天的日志,导入数据库 #***导入某一天数据: ./load2mysql.sh 20140101 #***导入某一段时间数据: ./load2mysql.sh 20140101 20140110 #***不传参数默认导入昨天的数据: ./load2mysql.sh #*

java项目打包成可执行jar用log4j将日志写在jar所在目录

开发一个demo时想将日志输出到最终打包的jar所在目录,从网上学习实验整理之后的配置如下, log4j.properties log4j.rootLogger = INFO,console,logFile log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Threshold=INFO log4j.appender.console.ImmediateFlush=true log4j.app

重新学习MySQL数据库10:MySQL里的那些日志们

重新学习MySQL数据库10:MySQL里的那些日志们 同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等.本文主要描述错误日志文件. 1.MySQL日志文件系统的组成 a.错误日志:记录启动.运行或停止mysqld时出现的问题. b.通用日志:记录建立的客户端连接和执行的语句.