ログバックログmysqlに出力

2473 ワード

ログファイルは統計しやすいように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
) ENGINE=InnoDB DEFAULT CHARSET=UTF8;




DROP TABLE IF EXISTS `logging_event_exception`;
CREATE TABLE `logging_event_exception` (
  `event_id` INT NOT NULL, 
  `i` SMALLINT NOT NULL,
  `trace_line` VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=UTF8;

Javaファイルを実行すればOKです