私はLog4j 1.2.15を使用しなければならないと言ってこれを前に説明します。残念ながら、私はアップグレードを提案しないでください。私はExtras companion version 1.1にアクセスしています。Log4j 1.2.15 ExpressionFilter regex
ExpressionFilter
を使用して、少なくとも1つの ' - '記号の後に任意の数字の0-9を含むメッセージを一致させようとしています。たとえば :-03928474
または--27646
など
EDIT:完全な文字列の 例: 私はこれの一部を一致させたい<ClassName---0182364759> xxx this is a debug message
。
私は、次の式を使用しています:MSG LIKE [-]{1,}[0-9]{1,}
これは私が試したすべての正規表現建設現場に基づいて、私のニーズに対応すべきです。私は[0-9]{1,}
の代わりに\d{1,}
を試しましたが、Log4jは式から\ dを削除することに注意してください(私はデバッグを有効にしています)。
Appender
の他のExpressionFilter
が期待通りに機能するので、これはAppender
の構造では問題ではないと思います。
これは動作しないものである:次の行に同じアペンダで
<filter class="org.apache.log4j.filter.ExpressionFilter">
<param name="Expression" value="(MSG LIKE [-]{1,}[0-9]{1,})" />
<param name="AcceptOnMatch" value="true" />
</filter>
は、作業を行います。
<filter class="org.apache.log4j.filter.ExpressionFilter">
<param name="Expression" value="(LEVEL >= WARN)" />
<param name="AcceptOnMatch" value="true" />
</filter>
これはXMLで指定する必要があります。
Log4j 1.2が正規表現を処理する方法の特質に精通している人、または私が間違っている箇所を指摘できる人は誰ですか?
'\ d'の代わりに' [0-9] 'を使うのは分かりますが、' + 'の代わりに' {1、} 'を使うのはちょっとばかげています。また、大括弧の中に '-'を入れている理由は分かりません。とにかく、入力文字列の一部を回答に含めることはできますか?あなたがマッチしているものがわからないときは、問題をデバッグするのは難しいです。 – CAustin
私はすでにいくつかの例を挙げています: "例えば:' -03928474'や '--27646'など。 –
それは全体の行ですか?あなたのパターンには 'MSG LIKE ... 'が含まれています – CAustin