天天看点

Logback 日志输出到 mysql

日志文件为了方便统计所以就存放在了mysql里,这里只是根据官方的文档做了一个demo。

依赖这几个jar:

log4j-over-slf4j-1.7.7.jar

logback-core-1.1.2.jar

slf4j-api-1.7.7.jar

logback-classic-1.1.2.jar

mysql-connector-java-5.1.33-bin.jar

src根目录放logblock.xml

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>

<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">

<connectionSource

class="ch.qos.logback.core.db.DriverManagerConnectionSource">

<driverClass>com.mysql.jdbc.Driver</driverClass>

<url>jdbc:mysql://localhost:3306/log</url>

<user>user</user>

<password>123</password>

</connectionSource>

</appender>

<root level="ALL">

<appender-ref ref="DB" />

</root>

</configuration>

现在开始写java测试文件喽

package com.log;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class MainDemo {

final static Logger logger = LoggerFactory.getLogger(MainDemo.class.getName());

public static void main(String[] args) {

logger.debug("aaaaaa");

logger.info("aaaaaa");

}

这里只输出了debug和info

然后把下面的sql在mysql里执行

DROP TABLE IF EXISTS `logging_event`;

CREATE TABLE `logging_event` (

`timestmp` LONG NOT NULL,

`formatted_message` TEXT NOT NULL,

`logger_name` VARCHAR(255) NOT NULL,

`level_string` VARCHAR(255) NOT NULL,

`thread_name` VARCHAR(255) NOT NULL,

`reference_flag` SMALLINT NOT NULL,

`caller_filename` VARCHAR(255) NOT NULL,

`arg0` VARCHAR(255),

`arg1` VARCHAR(255),

`arg2` VARCHAR(255),

`arg3` VARCHAR(255),

`caller_class` VARCHAR(255) NOT NULL,

`caller_method` VARCHAR(255) NOT NULL,

`caller_line` VARCHAR(255) NOT NULL,

`event_id` INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY (event_id)

) ENGINE=InnoDB DEFAULT CHARSET=UTF8;

DROP TABLE IF EXISTS `logging_event_property`;

CREATE TABLE `logging_event_property` (

`event_id` INT NOT NULL,

`mapped_key` VARCHAR(255) NOT NULL,

`mapped_value` TEXT NOT NULL

DROP TABLE IF EXISTS `logging_event_exception`;

CREATE TABLE `logging_event_exception` (

`i` SMALLINT NOT NULL,

`trace_line` VARCHAR(255) NOT NULL

运行java文件就ok了