1

log4j の代わりに java.util.logging フレームワークを使用して、Amazon Web Services SDK のログ記録を有効にしようとしています。私はなんとかそれを機能させ、ログはプロパティファイルの java.util.logging.FileHandler.pattern で指定されたファイルに入れました。

私の log.properties ファイル

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger
handlers=java.util.logging.FileHandler
com.amazonaws.request.level=FINE
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.pattern=./javalog.log

私が探しているのは、実行時にファイル名を設定する方法です。

次のオプションを試しました

オプション 1: プロパティ ファイル: 次の java.util.logging.FileHandler.pattern=${mylogfile} を設定します。

次に、Java プログラムの main() 関数で System.setProperty("mylogfile", logName); を呼び出します。

オプション 2: プロパティ ファイルから「java.util.logging.FileHandler.pattern」行を削除します。

代わりに、System.setProperty("java.util.logging.FileHandler.pattern", logName); を呼び出します。

これらのオプションはどちらも機能しません。

Ps: log4j の場合、オプション 1 で問題なく動作します。

SDK ロギングのログ ファイルを動的にカスタマイズする方法はありますか?

ありがとうビジェイ

4

1 に答える 1

0

LogManagerは、任意の構成コードをサポートしています。ドキュメントごと:

プロパティ「構成」。このプロパティは、任意の構成コードを実行できるようにすることを目的としています。プロパティは、空白またはコンマで区切られたクラス名のリストを定義します。名前付きクラスごとに新しいインスタンスが作成されます。各クラスのデフォルト コンストラクターは、ロガー レベルの設定、ハンドラーの追加、フィルターの追加など、ログ構成を更新するために任意のコードを実行する可能性があります。

たとえば、次のようにコンパイルできます。

    package somepackage;
    public class Config {
        public Config() throws Exception {
            String pattern = System.getProperty("mylogfile", "javalog.log");
            FileHandler f = new FileHandler(pattern);
            Logger.getLogger("").addHandler(f);
        }
    }

次に、次の構成ファイルを使用してインストールします。

config=somepackage.Config
com.amazonaws.request.level=FINE

サブクラスまたはプロキシ ハンドラを作成して、実行時にログ ファイル名を生成する方法とタイミングを制御することもできます。

于 2014-12-16T14:48:12.740 に答える