2009-01-20

Java : log4j を使ってログを syslog に出力してみる(in CentOS5) - 1


log4j を使ってログを syslog に出力してみる。in CentOS5

条件
  • 外部ファイル(log4j.properties)から設定内容を取得する
  • カテゴリ名は syslog とする
  • Facility は local0 とする
  • Facility が local0 のログは /home/work/logs/sample.log に出力する
  • ログレベルが WARN 以上のメッセージを出力する


構成
/home
└ /work
├ /jar
│  ├ sample.jar
│  └ log4j-1.2.15.jar
├ /logs
├ log4j.properties
└ run.sh
 



環境
  • jdk1.6.0_04
  • log4j-1.2.15
  • CentOS5


ファイル作成

sample.jar(Test.java)
package foo.boo;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Test {

static Logger logger= Logger.getLogger("syslog");

    public static void main(String[] args) {
        PropertyConfigurator.configure(args[0]);
        logger.debug("debug.");
        logger.info("info.");
        logger.warn("warn.");
        logger.error("error.");
        logger.fatal("fatal.");
    }
}
 


log4j.properties
#rootLogger
log4j.rootLogger=DEBUG

# syslog
log4j.logger.syslog=WARN,syslog

#  APPENDER syslog
log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
log4j.appender.syslog.SyslogHost=127.0.0.1
log4j.appender.syslog.Facility=local0

log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
log4j.appender.syslog.layout.ConversionPattern=%6p %c{1} - %m%n
 

参考:(Apache Log4j 1.2.15 API)


run.sh
#!/bin/sh

SAMPLE_HOME=${PWD}

export LIBS=${SAMPLE_HOME}/jar/log4j-1.2.15.jar:${SAMPLE_HOME}/jar/sample.jar

JAVA_CMD=$JAVA_HOME/bin/java

CMD=${JAVA_CMD}" -classpath "${LIBS}" foo.boo.Test "${SAMPLE_HOME}"/log4j.properties"

${CMD}
 



CentOS の設定

/etc/syslog.conf に追加。
/etc/sysconfig/syslog を変更。
syslogd の再起動。
ついでに、514/udp ポートの確認。
# vi /etc/syslog.conf
----- ----- -----
# 追加
local0.* /home/work/logs/sample.log

# vi /etc/sysconfig/syslog
----- ----- -----
# 変更前
# SYSLOGD_OPTIONS="-m 0"
# 変更後
SYSLOGD_OPTIONS="-m 0 -r"

# service syslog restart

# netstat -an | grep -i udp | grep 514
 

参考


実行。
# /home/work/run.sh
 


で、/home/work/logs/sample.log にログが出力された。

0 件のコメント:

コメントを投稿