2017-07-27 3 views
0

こんにちは私のログ用にLog4j2を使用しています。メッセージプレフィックスに基づいてどのようにメッセージを別のファイルに記録できるか混乱しています。Lo4j config - mesasgeプレフィックスのタイプに基づいて異なるファイルにログする

たとえば、現在、すべてのメッセージは1つのログフォルダに記録されます。 :
私のメッセージのセットは次のようになり「com.project.latency:プロジェクト名= [MooPointProject] .......」

私の他のログメッセージの一部はフォーマットである: 「COM 。project.latency:ProjectName = [DataPlaneProject] ....... '

MooPointProjectを含むメッセージを特定のファイルに記録し、DataPlaneProjectを含むメッセージを別のログファイルに記録します。

ロギングレベル自体を変更する以外の方法がありますか?

+1

@Alexeyをベストアンサーとして選択する必要があります。 – DevelopingDeveloper

答えて

1

プロジェクト名ごとに複数のアペンダーを設定します。たとえば:

<RollingFile name="RollingFile" fileName="logs/MooPointProject.log" 
      filePattern="logs/app-%d{MM-dd-yyyy}.log.gz"> 
    <RegexFilter regex=".*MooPointProject.*" onMatch="ACCEPT" onMismatch="DENY"/> 
    <PatternLayout> 
    <pattern>%d %p %c{1.} [%t] %m%n</pattern> 
    </PatternLayout> 
    <TimeBasedTriggeringPolicy /> 
</RollingFile> 

<RollingFile name="RollingFile" fileName="logs/DataPlaneProject.log" 
      filePattern="logs/app-%d{MM-dd-yyyy}.log.gz"> 
    <RegexFilter regex=".*DataPlaneProject.*" onMatch="ACCEPT" onMismatch="DENY"/> 
    <PatternLayout> 
    <pattern>%d %p %c{1.} [%t] %m%n</pattern> 
    </PatternLayout> 
    <TimeBasedTriggeringPolicy /> 
</RollingFile> 

次に、あなたのロガー(複数可)にアペンダの両方を割り当てます。 RegexpFilterはプロジェクト固有の行のみを受け入れるので、適切なファイルに別々のファイルを取得します。

P.S. - 他の種類のフィルタの詳細を見つけるhere

関連する問題