ログエントリを生成するスレッドが複数あり、誰が何をしたのかを知るためにlogback SiftingAppenderを使用します。すべてうまく動作し、現在ログをmongodbに保存しようとしています。howtoログバック識別子を使用してmongodbの挿入をフィルタリングする
mongodbでは、ログは埋め込みドキュメント配列に保存する必要があります。すべてのユーザー文書には、ログ行を含む埋め込み文書の配列を持つ1つの埋め込み文書があります。
これは何らかの試行錯誤が必要です。
以下のlogback.xmlのテストでは、私はfile
,consol
とカスタムアペンダーを持っています。
私の考えは、私がカスタムアペンダーappend()
メソッドでSiftingAppender discriminator value
を捕まえることができたということでした。次に、getMDCPropertyMap()
。 ILoggingEvent
で私にMDC値を教えてもらえますが、これは私がやりたいことのために効率的なテクニックであるかどうかです。
ログアウトにはネイティブMDC-mongodb-appenderがありません。
<configuration>
<appender name="SIFT-FILE" class="ch.qos.logback.classic.sift.SiftingAppender">
<!-- in the absence of the class attribute, it is assumed that the
desired discriminator type is
ch.qos.logback.classic.sift.MDCBasedDiscriminator -->
<discriminator>
<key>userid</key>
<defaultValue>unknown</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${userid}" class="ch.qos.logback.core.FileAppender">
<file>${userid}.log</file>
<append>true</append>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</pattern>
</layout>
</appender>
</sift>
</appender>
<appender name="SIFT-STDOUT" class="ch.qos.logback.classic.sift.SiftingAppender">
<!-- in the absence of the class attribute, it is assumed that the
desired discriminator type is
ch.qos.logback.classic.sift.MDCBasedDiscriminator -->
<discriminator>
<key>userid</key>
<defaultValue>unknown</defaultValue>
</discriminator>
<sift>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} ${userid}- %msg %n</pattern>
</encoder>
</appender>
</sift>
</appender>
<appender name="SIFT-MONGO" class="ch.qos.logback.classic.sift.SiftingAppender">
<!-- in the absence of the class attribute, it is assumed that the
desired discriminator type is
ch.qos.logback.classic.sift.MDCBasedDiscriminator -->
<discriminator>
<key>userid</key>
<defaultValue>unknown</defaultValue>
</discriminator>
<sift>
<appender name="MONGO" class="com.carlsberg.MongoAppender">
</appender>
</sift>
</appender>
<root level="DEBUG">
<appender-ref ref="SIFT-FILE" />
<appender-ref ref="SIFT-STDOUT" />
<appender-ref ref="SIFT-MONGO" />
</root>
</configuration>