|
| 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