- PR -

JDK1.4 ロギングAPI の使用法について

1
投稿者投稿内容
sn
会議室デビュー日: 2004/06/22
投稿数: 1
投稿日時: 2004-06-22 22:03
初めて投稿いたします。
WindowsXP、WSAD5.0を使用して、Webアプリケーションを開発しているものです。

現在、JDK1.4 ロギングAPIを用いてログ機能を作成しています。

java.util.logging.Formatterを継承して
mylogging.FileFormatterという独自のFormatterを作成し
logging.propertiesファイルで以下のように指定したのですが、
きちんとFormatterが選択されずデフォルトのFormatterが使用されてしまいます。

以下が、logging.propertiesと、それを使用しているコードの内容です。

--logging.properties------------------------------------------------------

handlers= java.util.logging.FileHandler
.level= ALL
java.util.logging.FileHandler.pattern = C:/MyLogging.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = mylogging.FileFormatter
--------------------------------------------------------------------------


--使用している箇所のコード------------------------------------------------

package mylogging;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public class TestLogging {
 public Logger loginit() {
  try {
   // 設定ファイルの読み込み
   // 注:logging.propertiesは、WEB-INF\classes内に配置
   InputStream inputStream = this.getClass()
                  .getClassLoader()
                  .getResourceAsStream("logging.properties");
   LogManager.getLogManager().readConfiguration(inputStream);

  } catch (FileNotFoundException ex) {
  } catch (IOException ex) {
  }
  // ロガーを取得
  Logger logger = Logger.getLogger("TestLogger");

  logger.log(Level.INFO, "ログを初期化しました。")
 }
}
--------------------------------------------------------------------------

ログ自体は指定したファイルに出力されているので、
logging.propertiesファイルは読み込めていると思うのですが、
何故かFormatterだけはデフォルトになってしまいます。

そもそもlogging.propertiesファイルには、
独自のFormatterを指定できないのでしょうか?
それとも、logging.propertiesファイルの書き方や配置が
間違っているのでしょうか?

ご存知の方がいらっしゃいましたら、ご教授お願いいたします。

[ メッセージ編集済み 編集者: sn 編集日時 2004-06-22 22:05 ]
ばる〜ん
会議室デビュー日: 2003/11/05
投稿数: 1
投稿日時: 2004-08-06 21:45
>そもそもlogging.propertiesファイルには、
>独自のFormatterを指定できないのでしょうか?

独自のFormatterの指定自体はできるはずです。
ここに例が載っています。
http://www.hellohiro.com/logging.htm




kennyj
会議室デビュー日: 2004/09/29
投稿数: 1
投稿日時: 2004-09-29 11:36
もう解決したかも知れませんが、後々の為に。。

とりあえず私も同様の問題に対処する為調査しました(jdk1.4.2_04/tomcat4.1.30)。

#WSAD5.0との事ですが原因は同じではないかと思います。

原因は、LogManagerがクラスをロードする際SystemClassLoaderを利用するので
独自のカスタムFormatterをロードする事出来ないためです。
(LogManager/FileHandlerのソースから判断)
したがって、webアプリの中などのカスタムFormatterはロードできません。

解決策は、$JAVA_HOME/jre/lib/extに、独自Formatterを含むjarファイルを配置する事
です(難儀やな〜)。
tomcatのクラスローダの説明を参考にしました.(http://jakarta.apache.org/tomcat/tomcat-4.1-doc/class-loader-howto.html)

その際配置したjarファイルの依存するjarも配置する必要があるので注意してください。
1

スキルアップ/キャリアアップ(JOB@IT)