1
+ <configuration >
2
+ <shutdownHook class =" ch.qos.logback.core.hook.DelayingShutdownHook" />
3
+ <property name =" async_queue_size" value =" ${queue.size:-50000}" />
4
+ <property name =" async_max_flush_time" value =" ${max.flush.time:-0}" />
5
+ <!-- ===================================================== -->
6
+ <!-- Structured Logging -->
7
+ <!-- ===================================================== -->
8
+ <!-- Only sample 0.1% of the requests -->
9
+ <property name =" splunk_sampling_rate" value =" ${splunk_sampling_rate:-0.001}" />
10
+ <include resource =" structured-logger-logback.xml" />
11
+ <!-- ===================================================== -->
12
+ <!-- Service Config -->
13
+ <!-- ===================================================== -->
14
+ <property name =" DEFAULT_SERVICE_PATTERN"
15
+ value =" %-16X{transactionId} %logger %msg" />
16
+
17
+ <!-- ===================================================== -->
18
+ <!-- Common Config -->
19
+ <!-- ===================================================== -->
20
+
21
+ <!-- JUL/JDK14 to Logback bridge -->
22
+ <contextListener class =" ch.qos.logback.classic.jul.LevelChangePropagator" >
23
+ <resetJUL >true</resetJUL >
24
+ </contextListener >
25
+
26
+ <!-- Service Log (Rollover every 50MB, max 11 logs) -->
27
+ <appender name =" SERVICE" class =" ch.qos.logback.core.rolling.RollingFileAppender" >
28
+ <file >${log.service.output}</file >
29
+ <rollingPolicy class =" ch.qos.logback.core.rolling.FixedWindowRollingPolicy" >
30
+ <fileNamePattern >${log.service.output}.%i</fileNamePattern >
31
+ <minIndex >1</minIndex >
32
+ <maxIndex >10</maxIndex >
33
+ </rollingPolicy >
34
+ <triggeringPolicy class =" ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy" >
35
+ <maxFileSize >50MB</maxFileSize >
36
+ </triggeringPolicy >
37
+ <encoder >
38
+ <pattern >%date %.-3level ${DEFAULT_SERVICE_PATTERN}%n</pattern >
39
+ </encoder >
40
+ </appender >
41
+
42
+ <!-- Strato package only log (Rollover every 50MB, max 11 logs) -->
43
+ <appender name =" STRATO-ONLY" class =" ch.qos.logback.core.rolling.RollingFileAppender" >
44
+ <file >${log.strato_only.output}</file >
45
+ <rollingPolicy class =" ch.qos.logback.core.rolling.FixedWindowRollingPolicy" >
46
+ <fileNamePattern >${log.strato_only.output}.%i</fileNamePattern >
47
+ <minIndex >1</minIndex >
48
+ <maxIndex >10</maxIndex >
49
+ </rollingPolicy >
50
+ <triggeringPolicy class =" ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy" >
51
+ <maxFileSize >50MB</maxFileSize >
52
+ </triggeringPolicy >
53
+ <encoder >
54
+ <pattern >%date %.-3level ${DEFAULT_SERVICE_PATTERN}%n</pattern >
55
+ </encoder >
56
+ </appender >
57
+
58
+ <!-- LogLens -->
59
+ <appender name =" LOGLENS" class =" com.twitter.loglens.logback.LoglensAppender" >
60
+ <mdcAdditionalContext >true</mdcAdditionalContext >
61
+ <category >loglens</category >
62
+ <index >${log.lens.index}</index >
63
+ <tag >${log.lens.tag}/service</tag >
64
+ <encoder >
65
+ <pattern >%msg%n</pattern >
66
+ </encoder >
67
+ <turboFilter class =" ch.qos.logback.classic.turbo.DuplicateMessageFilter" >
68
+ <cacheSize >500</cacheSize >
69
+ <allowedRepetitions >50</allowedRepetitions >
70
+ </turboFilter >
71
+ <filter class =" com.twitter.strato.logging.logback.RegexFilter" >
72
+ <forLogger >manhattan-client</forLogger >
73
+ <excludeRegex >.*InvalidRequest.*</excludeRegex >
74
+ </filter >
75
+ </appender >
76
+
77
+ <!-- ===================================================== -->
78
+ <!-- Primary Async Appenders -->
79
+ <!-- ===================================================== -->
80
+
81
+ <appender name =" ASYNC-SERVICE" class =" ch.qos.logback.classic.AsyncAppender" >
82
+ <queueSize >${async_queue_size}</queueSize >
83
+ <maxFlushTime >${async_max_flush_time}</maxFlushTime >
84
+ <appender-ref ref =" SERVICE" />
85
+ </appender >
86
+
87
+ <appender name =" ASYNC-STRATO-ONLY" class =" ch.qos.logback.classic.AsyncAppender" >
88
+ <queueSize >${async_queue_size}</queueSize >
89
+ <maxFlushTime >${async_max_flush_time}</maxFlushTime >
90
+ <appender-ref ref =" STRATO-ONLY" />
91
+ </appender >
92
+
93
+ <appender name =" ASYNC-LOGLENS" class =" ch.qos.logback.classic.AsyncAppender" >
94
+ <queueSize >${async_queue_size}</queueSize >
95
+ <maxFlushTime >${async_max_flush_time}</maxFlushTime >
96
+ <appender-ref ref =" LOGLENS" />
97
+ </appender >
98
+
99
+ <!-- ===================================================== -->
100
+ <!-- Package Config -->
101
+ <!-- ===================================================== -->
102
+
103
+ <!-- Per-Package Config (shared) -->
104
+ <logger name =" com.twitter" level =" info" />
105
+
106
+ <!--
107
+ By default, we leave the strato package at INFO level.
108
+ However, this line allows us to set the entire strato package, or a subset of it, to
109
+ a specific level. For example, if you pass -Dstrato_log_package=streaming -Dstrato_log_level=DEBUG
110
+ only loggers under com.twitter.strato.streaming.* will be set to DEBUG level. Passing only
111
+ -Dstrato_log_level will set all of strato.* to the specified level.
112
+ -->
113
+ <logger name =" com.twitter.strato${strato_log_package:-}" level =" ${strato_log_level:-INFO}" />
114
+
115
+ <logger name =" com.twitter.wilyns" level =" warn" />
116
+ <logger name =" com.twitter.finagle.mux" level =" warn" />
117
+ <logger name =" com.twitter.finagle.serverset2" level =" warn" />
118
+ <logger name =" com.twitter.logging.ScribeHandler" level =" warn" />
119
+ <logger name =" com.twitter.zookeeper.client.internal" level =" warn" />
120
+ <logger name =" com.twitter.decider.StoreDecider" level =" warn" />
121
+
122
+ <!-- Per-Package Config (Strato) -->
123
+ <logger name =" com.twitter.distributedlog.client" level =" warn" />
124
+ <logger name =" com.twitter.finagle.mtls.authorization.config.AccessControlListConfiguration" level =" warn" />
125
+ <logger name =" com.twitter.finatra.kafka.common.kerberoshelpers" level =" warn" />
126
+ <logger name =" com.twitter.finatra.kafka.utils.BootstrapServerUtils" level =" warn" />
127
+ <logger name =" com.twitter.server.coordinate" level =" error" />
128
+ <logger name =" com.twitter.zookeeper.client" level =" info" />
129
+ <logger name =" org.apache.zookeeper" level =" error" />
130
+ <logger name =" org.apache.zookeeper.ClientCnxn" level =" warn" />
131
+ <logger name =" ZkSession" level =" info" />
132
+ <logger name =" OptimisticLockingCache" level =" off" />
133
+ <logger name =" manhattan-client" level =" warn" />
134
+ <logger name =" strato.op" level =" warn" />
135
+ <logger name =" org.apache.kafka.clients.NetworkClient" level =" error" />
136
+ <logger name =" org.apache.kafka.clients.consumer.internals" level =" error" />
137
+ <logger name =" org.apache.kafka.clients.producer.internals" level =" error" />
138
+ <!-- produce a lot of messages like: Building client authenticator with server name kafka -->
139
+ <logger name =" org.apache.kafka.common.network" level =" warn" />
140
+
141
+ <!-- Root Config -->
142
+ <root level =" ${log_level:-INFO}" >
143
+ <appender-ref ref =" ASYNC-SERVICE" />
144
+ <appender-ref ref =" ASYNC-LOGLENS" />
145
+ </root >
146
+
147
+ <!-- Strato package only logging-->
148
+ <logger name =" com.twitter.strato"
149
+ level =" info"
150
+ additivity =" true" >
151
+ <appender-ref ref =" ASYNC-STRATO-ONLY" />
152
+ </logger >
153
+
154
+
155
+ </configuration >
0 commit comments