6. APPENDER4
Log4J 6章 APPENDER4
6.1. org.apache.log4j.net.TelnetAppender クラス
TelnetAppender は読み出し専用のソケットにログを書き込むクラスです。telnet を利用してログを監視するというように、TCP/IP越しにリモートサーバのログ出力をモニタリングすることが容易に行えるようになります。特にサーブレットの動作を監視するときには非常に便利です。
1: TelnetAppender()
上記コンストラクタで、TelnetAppender オブジェクトを生成したら、各種パラメータをセットします。
TelnetAppender は Layout オブジェクトを必要としますので、setLayout( ) メソッドで Layout をセットします。また、ログをどのポートに出力するのかを、setPort( ) メソッドで指定します。これを使用しない場合は、デフォルトで 23がセットされます。しかし、一般的に Telnet 利用可能なサーバの場合、23番ポートは既に使用中であることから、ここで明示的にポートを使用しないと、この appender を使用しようとした時点で例外が発生します。ですので、他に使用中でないポート番号を明示的に使用する事をお勧めします。
各種パラメータの設定が終わったら、activateOption( ) メソッドで各種設定を有効にします。下記クラスを実行すると、実行されているサーバの9999番ポートをtelnetでアクセスすると、ログの出力を確認することができます。
import org.apache.log4j.*; import org.apache.log4j.net.TelnetAppender; public TelnetAppenderSample{ public static void main(String args[]){ Logger logger=Logger.getLogger("sample"); logger.setLevel(Level.WARN); PatternLayout layout=new PatternLayout(); layout.setConversionPattern(PatternLayout.DEFAULT_CONVERSION_PATTERN); TelnetAppender appender=new TelnetAppender(); appender.setPort(9999); appender.setLayout(layout); appender.activateOptions(); logger.addAppender(appender); while(true){ logger.info("--- info! ---"); logger.warn("--- warn! ---"); logger.error("--- error! ---"); } } }
設定ファイルを使用する場合の書き方の例を以下に示します。
1: # sampleLogger 2: log4j.logger.sampleLogger=WARN,A9 3: 4: log4j.appender.A9=org.apache.log4j.net.TelnetAppender 5: log4j.appender.A9.port=9999 6: log4j.appender.A9.layout=org.apache.log4j.PatternLayout 7: log4j.appender.A9.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
(実習課題1)
上記の「TelnetAppenderSample」を実装し、実行しなさい。
- ポートは使用できる番号のものを使用すること
- 実行しているサーバとは別のリモートサーバから、telnetを利用して指定したポートにアクセスしてみること