属性に応じて logbacks パターン レイアウトの一部を作成することは可能ですか? たとえば、%X{bdid} が存在する場合にのみ bdid (...) を表示しますか?
このアペンダー
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>bdid\(%X{bdid}\) - %d{HH:mm:ss.SSS} %msg%n</pattern>
</encoder>
</appender>
プリント
bdid(0b5d3877-f3dd-4189-8b1b-489c8b617f2a) 18:22:25.206
bdidが存在するが、印刷する場合
bdid() 18:22:20.928
そうでない場合は。
ログ内の空の bdid() を省略するにはどうすればよいですか?
ベストアンサー1
あなたは交換する機能、詳細はドキュメントに記載されていますここ実際の例は次のようになります。
ログバック
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%replace(bdid\(%X{bdid}\)){'bdid\(\)', ''} - %d{HH:mm:ss.SSS} %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>
テスト機能
public class PatternTest
{
@Test
public void test()
{
Logger logger = LoggerFactory.getLogger(PatternTest.class);
MDC.put("bdid", "hola");
logger.info("Check enclosed.");
MDC.remove("bdid");
logger.info("Check enclosed.");
}
}
テスト出力
bdid(hola) - 18:40:40.233 Check enclosed.
- 18:40:40.234 Check enclosed.