Log4jLogFilePatternReceiverクラスを使用して単純なログ ファイルを読み取っていますが、Log4j にフォーマット修飾子をオプションとして解釈するように指示する方法があるかどうか疑問に思っていました。
たとえば、次のパターンを想定します。
%r [%t] %p %c %x - %m%n
これは文字列に一致します
123 [main] INFO org.apache.log4j.whatever x=8 - Just a message.
しかし、文字列ではありません
123 [main] INFO org.apache.log4j.whatever - Just a message.
(つまり、上記と同じですが、「x=8」の部分はありません)。
Log4jに両方を一致させる方法はありますか?
別の関連するメモとして、 のソース コードにいくつかの追加の print ステートメントを LogFilePatternReceiver入れると、次のようになります。
Pattern: {%r [%t] %p %c %x - %m%n}
Regex: {(.*?)[ ]+\[(.*?)\][ ]+(\S*\s*?)[ ]+(\S*\s*?)[ ]+(.*)[ ]+\-[ ]+(.*?)}
ここで、中括弧は、余分なスペースやその他の文字が含まれていないことを確認するために、各式に属さずに単に各式の開始/終了を示します。正規表現は、メソッドLogFilePatternReceiverの最後で ,によって作成されます。initialize()
regexpal.comで正規表現を試してみると、メッセージを除く部分のみ一致します。つまり、正規表現によると、一致は次のとおりです。
123 [main] INFO org.apache.log4j.whatever x=8 -
(最後にスペースを入れて)。メッセージを含めるには、正規表現を $ 記号で閉じる必要があるようです。
パターン定義に誤りがありますか?