This is an automated email from the ASF dual-hosted git repository.

yong pushed a commit to branch branch-4.16
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit 762740c5e6de9799780c7642bcb5af6ce0116d03
Author: Hang Chen <[email protected]>
AuthorDate: Tue Aug 29 14:51:16 2023 +0800

    Enable kv logs in log4j configuration (#3986)
    
    ### Motivation
    We introduced DirectIO since BookKeeper 4.16.0, and the DirectIO classes 
use KV-based Slf4jSlogger. 
https://github.com/apache/bookkeeper/blob/master/bookkeeper-slogger/slf4j/src/main/java/org/apache/bookkeeper/slogger/slf4j/Slf4jSlogger.java
    
    In order to print the KV out, we need to add `%X` flag in log4j2.yaml, 
otherwise the log will miss the detailed key and values.
    
    <!-- Explain here the context, and why you're making that change. What is 
the problem you're trying to solve. -->
    
    ### Modifications
    In order to reduce the impact on current logger appenders, I add MDC-based 
appenders for `CONSOLE`, `TRACEFILE`, and `ROLLINGFILE` by adding `%X` for 
log4j2.yaml Appender PatternLayout.
    Only classes under `org.apache.bookkeeper.bookie.storage.directentrylogger` 
will enable MDC-based appender logger.
    
    If the key value has items, the log will look like:
    ```
    2023-06-19T16:01:56,685+0800 [main] INFO  
org.apache.bookkeeper.bookie.storage.directentrylogger.EntryLogIdsImpl 
{dirs=[data/bookkeeper/ledgers/current], durationMs=0, 
event=ENTRYLOG_IDS_CANDIDATES_SELECTED, maxId=21474836
    47, nextId=0} - ENTRYLOG_IDS_CANDIDATES_SELECTED
    2023-06-19T16:01:56,721+0800 [main] INFO  
org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntryLogger 
{directory=data/bookkeeper/ledgers/current, event=ENTRYLOGGER_CREATED, 
maxCachedReaders=32, maxCachedReader
    sPerThread=4, maxFileSize=1073741824, maxSaneEntrySize=5252620, 
perThreadBufferSize=33554432, readBufferSize=8388608, 
singleWriteBufferSize=33554432, totalReadBufferSize=268435456, 
totalWriteBufferSize=268435456} - ENTRYLO
    GGER_CREATED
    ```
    
    (cherry picked from commit da1d8eb7c0626850bb921f770a4c880bfdc0a0f2)
---
 conf/log4j2.xml | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/conf/log4j2.xml b/conf/log4j2.xml
index 61c92a5935..08d5d5613c 100644
--- a/conf/log4j2.xml
+++ b/conf/log4j2.xml
@@ -30,9 +30,15 @@
         <Console name="CONSOLE" target="SYSTEM_OUT">
             <PatternLayout pattern="%d{ISO8601} - %-5p - [%t:%C{1}@%L] - 
%m%n"/>
         </Console>
+        <Console name="CONSOLEMDC" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d{ISO8601} - %-5p - [%t:%C{1}@%L] %X - 
%m%n"/>
+        </Console>
         <File name="TRACEFILE" 
fileName="${sys:bookkeeper.log.dir}/bookkeeper-trace.log">
             <PatternLayout pattern="%d{ISO8601} - %-5p [%t:%C{1}@%L][%ndc] - 
%m%n"/>
         </File>
+        <File name="TRACEFILEMDC" 
fileName="${sys:bookkeeper.log.dir}/bookkeeper-trace.log">
+            <PatternLayout pattern="%d{ISO8601} - %-5p [%t:%C{1}@%L][%ndc] %X 
- %m%n"/>
+        </File>
         <RollingFile name="ROLLINGFILE" 
fileName="${sys:bookkeeper.log.dir}/${sys:bookkeeper.log.file}" 
filePattern="${sys:bookkeeper.log.dir}/${sys:bookkeeper.log.file}%d{.yyyy-MM-dd}">
             <PatternLayout pattern="%d{ISO8601} - %-5p [%t:%C{1}@%L] - %m%n"/>
             <Policies>
@@ -40,10 +46,20 @@
             </Policies>
             <DefaultRolloverStrategy max="100"/>
         </RollingFile>
+        <RollingFile name="ROLLINGFILEMDC" 
fileName="${sys:bookkeeper.log.dir}/${sys:bookkeeper.log.file}" 
filePattern="${sys:bookkeeper.log.dir}/${sys:bookkeeper.log.file}%d{.yyyy-MM-dd}">
+            <PatternLayout pattern="%d{ISO8601} - %-5p [%t:%C{1}@%L] %X - 
%m%n"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy modulate="true"/>
+            </Policies>
+            <DefaultRolloverStrategy max="100"/>
+        </RollingFile>
     </Appenders>
     <Loggers>
         <Root level="${sys:bookkeeper.log.root.level}">
             <AppenderRef ref="${sys:bookkeeper.log.root.appender}"/>
         </Root>
+        <Logger name="org.apache.bookkeeper.bookie.storage.directentrylogger" 
level="INFO">
+                <AppenderRef ref="${sys:bookkeeper.log.root.appender}MDC"/>
+        </Logger>
     </Loggers>
 </Configuration>

Reply via email to