スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

groovyでlogback

logbackの使い方のメモです。javaでログというとlog4jが有名ですがlog4jを作った作者が開発コミュニティとそりが合わなくて、新しく始めたログのプロジェクトがlogbackです。log4jの開発は停滞ぎみなので、logbackを使ってみたいと思います。

logbackから最新版を取得します。現時点は0.9.14です。
あと、commons-loggingに相当するライブラリとしてslf4jから最新版を取得します。現時点は1.5.6です。

logbackからlogback-classic.jarとlogback-core.jarをslf4jからslf4j-api.jarをクラスパスに通します。

今回はコンソールとDBにログを保存したいと思います。
まず、テーブルの準備。
src/main/java/ch/qos/logback/classic/db/dialectに各DB用のSQLが置いてあります。参考までにPostgreSQL用のSQLを引用します。

DROP TABLE logging_event_property;
DROP TABLE logging_event_exception;
DROP SEQUENCE logging_event_id_seq;
DROP TABLE logging_event;

CREATE SEQUENCE logging_event_id_seq MINVALUE 1 START 1;

CREATE TABLE logging_event
(
timestmp BIGINT NOT NULL,
formatted_message TEXT NOT NULL,
logger_name VARCHAR(254) NOT NULL,
level_string VARCHAR(254) NOT NULL,
thread_name VARCHAR(254),
reference_flag SMALLINT,
caller_filename VARCHAR(254) NOT NULL,
caller_class VARCHAR(254) NOT NULL,
caller_method VARCHAR(254) NOT NULL,
caller_line CHAR(4) NOT NULL,
event_id INT DEFAULT nextval('logging_event_id_seq') PRIMARY KEY
);

CREATE TABLE logging_event_property
(
event_id INT NOT NULL,
mapped_key VARCHAR(254) NOT NULL,
mapped_value VARCHAR(1024),
PRIMARY KEY(event_id, mapped_key),
FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
);

CREATE TABLE logging_event_exception
(
event_id INT NOT NULL,
i SMALLINT NOT NULL,
trace_line VARCHAR(254) NOT NULL,
PRIMARY KEY(event_id, i),
FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
);

次の準備はログの設定ファイルです。ファイル名はlogback.xmlになります。

<configuration>
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">

<Target>System.out</Target>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>

<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<driverClass>org.postgresql.Driver</driverClass>
<url>jdbc:postgresql://localhost:5432/test</url>
<user>user</user>
<password>password</password>
</connectionSource>
</appender>

<root>
<level value="INFO" />
<appender-ref ref="STDOUT" />
<appender-ref ref="DB" />
</root>
</configuration>

最後にログを出力するためのソースlogback.groovyを準備します。logback.groovyとlogback.xmlは同じフォルダーの保存します。

import org.slf4j.Logger
import org.slf4j.LoggerFactory

log = LoggerFactory.getLogger("groovy")
log.info("test")
log.warn("予定表??ハンカク")

実行結果はこんな感じになります。

aoyagi-kouhei-no-macbook:Groovy aoyagikouhei$ groovy logback.groovy
Warning: The Mac OS -Xdock: option is currently unsupported
Driver name=PostgreSQL Native Driver
Driver version=PostgreSQL 8.3 JDBC4 with SSL (build 603)
supportsGetGeneratedKeys=false
false
14:12:23 [main] INFO groovy - test
14:12:23 [main] WARN groovy - 予定表??ハンカク

もちろん、DBにも保存されています。
スポンサーサイト

Tag : logback

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。