[Axis と自分のアプリケーションを、サーブレットエンジンと同じログシステムを使うようにするにはどうすればいいのですか?] [編集日時 2004年5月16日am8:10 版]
質問: Axis と自分のアプリケーションを、サーブレットエンジンと同じログシステムを使うようにするにはどうすればいいのですか?
回答: 以下のことをします。
- 使用するロガーとそのプロパティをサーブレットエンジンレベルで定義します。
- 矛盾するロガー定義とプロパティファイルを axis レベルとアプリケーションレベルから取り除きます。
- jakarta-commons-logging (Axis と Jetty が使用しています) を使ってログ機能をプログラミングします。
Axis 1.1、Log4j 1.2.8、Jetty 4.2-14rc1 の例を挙げます。
1) log4j を含む Jetty を使用します。(例えば Jetty-4.2.14rc1-all.zip)
2) jetty-plus の機能を使えるように設定します (http://jetty.mortbay.org/jetty/plus/ にドキュメントがあります)
2a) jetty.xml を編集します。
- <Configure class="org.mortbay.jetty.Server"> を <Configure class="org.mortbay.jetty.plus.Server"> で置き換えます。
- 以下の行を追加します。
<Call name="instance" class="org.mortbay.util.Log">
<Call name="disableLog"/>
<Call name="add">
<Arg>
<New class="org.mortbay.util.log4j.Log4jSink">
<Call name="start"/>
</New>
</Arg>
</Call>
</Call>
3) log4j.properties を ${jetty.home}/etc にコピーします。
4) axis.jar から log4j.properties と simplelog.properties を取り除きます。
5) Jetty を Jettyplus として起動します。
6) log4j.configuration を定義します。
- 5と6は以下のコマンドで Jetty を起動することによっても行えます。
java -Djetty.server=org.mortbay.jetty.plus.Server -Dlog4j.configuration=log4j.properties -jar start.jar
7) WEB-INF/lib ディレクトリから log4j と commons-logging の jar ファイルも削除することができます。これはする必要はありませんが、jar にキスすることで人生が少し豊かになります。一つよりも多くの log4j が起動していることはあまり好ましくありません。
log4j.properties のカテゴリは次のようなものになります。
log4j.rootCategory=WARN, CONSOLE
log4j.logger.org.mortbay=WARN, JETTY
log4j.logger.org.apache.axis=WARN, AXIS
log4j.logger.com.mycompany=WARN, MYCOMPANY
Q: なぜ?
回答: ロギングは良いことです。正しくない設定がされたロギングにはセキュリティ的なリスクがあります。全てのロギングの設定を1箇所で行えば、正しくない設定を行うのが少し難しくなります。最大ファイルサイズとインデックスを指定してロールオーバーファイルロガーを使用すれば、一つのサーブレットエンジンインストールによって作成される、正確なサイズ制限のあるログファイルを持つことができます。ログでディスクを満杯にしたくないでしょう?
[ロギング (log4j を使用) を有効にするにはどうすればいいのですか?] [編集日時 2004年5月13日pm4:34 版]
1. 以下のような log4j.properties を作成します。
# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=DEBUG, LOGFILE
# enterprise ロガーカテゴリを FATAL に、その唯一の appender を CONSOLE に設定する。
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE は PatternLayout を使用して ConsoleAppender に設定します。
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n
# LOGFILE は PatternLayout を使用して File に設定します。
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=DEBUG
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
2. $webapps/$your-application/WEB_INF/classes フォルダにコピーします。
3. Tomcat、あるいは使っているサーブレットエンジンを再起動します。