2017-11-10 35 views
-1

私のvaadinアプリケーションでは、ユーザーセッションごとに1つのログファイルを作成したいと考えています。私は顧客ファイルアペンダーを作成し始めましたが、ThreadContextsについてさらに調査することにしました。私は今、自分のPatternLayout(%X{uid})内でうまく動作するThreadContextの中にユーザのuidを格納しますが、残念ながらFileAppenderの中にはありません(たぶん私は少し素朴でした)。Log4j2ユーザーセッションあたり1ファイル

あなたはどのようにこのようなものに行くのですか?簡単に言えば、私は当面、この結果を取得したいのですが:ログインしていません

  • ユーザー - >ログインして、ファイル名= DEBUG.LOG
  • ユーザー - >ファイル名= [ユーザー名]
  • を_debug.log

アイデアやポインターが高く評価されました!

+0

[この回答](https://stackoverflow.com/a/43404124/3284624)は、あなたが望むものをどのように達成できるかを説明します。ディレクトリの代わりにファイル名の変数を使用するには、それを微調整する必要がありますが、それは小さな変更です。また、[log4j2に関連するよくある質問](https://logging.apache.org/log4j/2.x/faq.html#separate_log_files) –

+0

をお読みになれます。私は他のスレッド(評判の欠如、それはちょうど再び下がった)にコメントすることはできません - それは、XMLに入力ミスがある可能性がありますか? AppenderRefではなくappender-ref? –

+0

ええと、私はあなたが何を意味するのか見て、それはタイプミスかもしれません。私はそれを再び両方の方法で実行し、何が起こるかを見てみましょう。 –

答えて

1

問題が解決し、教訓:FAQで説明したように

  • が異なるログファイルに書き込むには、私は、ルータを必要としていました。なぜ私はグーグルでこれを見ていないのか分からない。
  • カスタムアペンダーがこの問題を解決する必要はありません。
  • Log4j2は、ディレクトリが書き込み可能でないことを非常に気にしています。このような場合は、スタックトレースでスクロールアップしてください:ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender。あなたは犯人を見つけるだろう、Googleはしません。
  • また、Log4j2はアペンダがどのような順序で表示されるかを気にします。それはFAQとアペンダーのドキュメントで何度も述べられていますが、それでも私はそれを複数回上書きします。
関連する問題