質問するログイン新規登録

回答編集履歴

1

サンプルの追記

2017/01/20 08:57

投稿

makotribe
makotribe

スコア217

answer CHANGED
@@ -2,4 +2,61 @@
2
2
  下位のloggerは上位のloggerの設定を引き継ぐのではなく、上位にログ出力処理を伝搬します。
3
3
  このケースではFooのloggerはlogback.xmlに定義されていないためログ出力は行われず、伝搬された先のlogback.xmlに定義されているrootのloggerで初めてログ出力処理が行われます。
4
4
  FooのFQCNの名前でlogback.xmlにloggerを定義すれば、LoggerFactory.getLogger(Foo.class)でappenderは取得できるようになると思いますが、その状態だとFooのloggerとrootのloggerで二重にログが出力されることになります。
5
- ただし、Fooのloggerのadditivityをfalseに設定すれば上位への伝搬を止めることができます。
5
+ ただし、Fooのloggerのadditivityをfalseに設定すれば上位への伝搬を止めることができます。
6
+
7
+ ```xml
8
+ <!-- Fooでappenderは取得できない -->
9
+ <configuration>
10
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
11
+ <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder
12
+ by default -->
13
+ <encoder>
14
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
15
+ </pattern>
16
+ </encoder>
17
+ </appender>
18
+ <root level="debug">
19
+ <appender-ref ref="STDOUT" />
20
+ </root>
21
+ </configuration>
22
+ ```
23
+
24
+ ```xml
25
+ <!-- Fooでappenderは取得できるがFooとrootで二重にログが出力される -->
26
+ <configuration>
27
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
28
+ <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder
29
+ by default -->
30
+ <encoder>
31
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
32
+ </pattern>
33
+ </encoder>
34
+ </appender>
35
+ <logger name="test.Foo" level="debug">
36
+ <appender-ref ref="STDOUT" />
37
+ </logger>
38
+ <root level="debug">
39
+ <appender-ref ref="STDOUT" />
40
+ </root>
41
+ </configuration>
42
+ ```
43
+
44
+ ```xml
45
+ <!-- Fooでappenderが取得できてFooだけでログが出力される -->
46
+ <configuration>
47
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
48
+ <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder
49
+ by default -->
50
+ <encoder>
51
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
52
+ </pattern>
53
+ </encoder>
54
+ </appender>
55
+ <logger name="test.Foo" level="debug" additivity="false">
56
+ <appender-ref ref="STDOUT" />
57
+ </logger>
58
+ <root level="debug">
59
+ <appender-ref ref="STDOUT" />
60
+ </root>
61
+ </configuration>
62
+ ```