解答例 - 実習課題2 - 4.APPENDER2
(実習課題2)
全てのレベルのログイベントを故意に発生させ、WARN以上ログイベントが発生した場合のみ、ログとして出力されるプログラムを作成しなさい。
- WARN 以上のログイベントが発生したときは、リモートの syslogd にメッセージを渡すこと。
- ERROR 以上のログイベントが発生したときは、メールにログを出力するようにすること。
- syslog.conf の記述を変えてどのようにログが出力されるか確認すること。
- SyslogAppender で使用する Layout は3章の実習課題1に示す PatternLayout を使用すること。
解答例
/** * Log4jExample.java * TECHSCORE Java Jakarta Log4J 4章 実習課題2 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.log4j.chapter4.exercise2; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class Log4jExample { public static void main(String[] args) { if (args.length == 0) { System.out.println("引数に設定ファイルを指定してください"); return; } //インスタンス生成 Logger logger = (Logger)Logger.getInstance("SyslogLogger"); PropertyConfigurator.configure(args[0]); logger.debug("debug!!"); logger.info("info!!"); logger.warn("warn!!"); logger.error("error!!"); logger.fatal("fatal!!"); } }
▼以下は、設定ファイルです。
#Log4J 4章 実習課題2 #rootLogger log4j.rootLogger=DEBUG # smtpLogger log4j.logger.smtpLogger=ERROR,smtpAppender # syslogLogger log4j.logger.syslogLogger=WARN,syslogAppender # APPENDER smtpAppender log4j.appender.smtpAppender=org.apache.log4j.net.SMTPAppender log4j.appender.smtpAppender.BufferSize=1 [email protected] [email protected] log4j.appender.smtpAppender.Subject=smtpAppender_log log4j.appender.smtpAppender.SMTPHost=mail.techscore.4dd log4j.appender.smtpAppender.layout=org.apache.log4j.PatternLayout log4j.appender.smtpAppender.layout.ConversionPattern=%d [%t] %-5p %c - %m%n # APPENDER syslogAppender log4j.appender.syslogAppender=org.apache.log4j.net.SyslogAppender log4j.appender.syslogAppender.SyslogHost=host.techscore.4dd log4j.appender.syslogAppender.Facility=local0 log4j.appender.syslogAppender.Layout=org.apache.log4j.PatternLayout log4j.appender.syslogAppender.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
▼/etc/syslog.confに以下を追記してください。
#[selecter field][tab| ][action field] #[facility].[priority][tab| ][log_file_path] #/etc/syslog.confに下を追記 local0.* /home/username/Log4J/log/syslog