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

xjiao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mnemonic.git


The following commit(s) were added to refs/heads/master by this push:
     new b4f7bd7  MNEMONIC-728: Update log4j.properties in each subproject 
folders with log4j2.xml
b4f7bd7 is described below

commit b4f7bd7eca3cbd67d4f469e6107e37cca98de52c
Author: Yanhui Zhao <[email protected]>
AuthorDate: Tue Mar 8 01:19:02 2022 +0000

    MNEMONIC-728: Update log4j.properties in each subproject folders with 
log4j2.xml
---
 .../src/main/resources/log4j.properties            |  33 ------
 mnemonic-collections/src/main/resources/log4j2.xml | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 mnemonic-common/src/main/resources/log4j2.xml      | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 mnemonic-core/src/main/resources/log4j.properties  |  33 ------
 mnemonic-core/src/main/resources/log4j2.xml        | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 mnemonic-examples/src/main/resources/log4j2.xml    | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 mnemonic-sessions/src/main/resources/log4j2.xml    | 121 +++++++++++++++++++++
 .../src/main/resources/log4j.properties            |  33 ------
 .../src/main/resources/log4j2.xml                  | 121 +++++++++++++++++++++
 32 files changed, 1936 insertions(+), 528 deletions(-)

diff --git a/mnemonic-collections/src/main/resources/log4j.properties 
b/mnemonic-collections/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- a/mnemonic-collections/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git a/mnemonic-collections/src/main/resources/log4j2.xml 
b/mnemonic-collections/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ b/mnemonic-collections/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git a/mnemonic-common/src/main/resources/log4j.properties 
b/mnemonic-common/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- a/mnemonic-common/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git a/mnemonic-common/src/main/resources/log4j2.xml 
b/mnemonic-common/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ b/mnemonic-common/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-computing-services/mnemonic-utilities-service/src/main/resources/log4j.properties
 
b/mnemonic-computing-services/mnemonic-utilities-service/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- 
a/mnemonic-computing-services/mnemonic-utilities-service/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git 
a/mnemonic-computing-services/mnemonic-utilities-service/src/main/resources/log4j2.xml
 
b/mnemonic-computing-services/mnemonic-utilities-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ 
b/mnemonic-computing-services/mnemonic-utilities-service/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git a/mnemonic-core/src/main/resources/log4j.properties 
b/mnemonic-core/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- a/mnemonic-core/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git a/mnemonic-core/src/main/resources/log4j2.xml 
b/mnemonic-core/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ b/mnemonic-core/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git a/mnemonic-examples/src/main/resources/log4j.properties 
b/mnemonic-examples/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- a/mnemonic-examples/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git a/mnemonic-examples/src/main/resources/log4j2.xml 
b/mnemonic-examples/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ b/mnemonic-examples/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/main/resources/log4j.properties 
b/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- 
a/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git 
a/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/main/resources/log4j2.xml 
b/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ b/mnemonic-hadoop/mnemonic-hadoop-mapreduce/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-memory-services/mnemonic-java-vmem-service/src/main/resources/log4j.properties
 
b/mnemonic-memory-services/mnemonic-java-vmem-service/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- 
a/mnemonic-memory-services/mnemonic-java-vmem-service/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git 
a/mnemonic-memory-services/mnemonic-java-vmem-service/src/main/resources/log4j2.xml
 
b/mnemonic-memory-services/mnemonic-java-vmem-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ 
b/mnemonic-memory-services/mnemonic-java-vmem-service/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-memory-services/mnemonic-nvml-pmem-service/src/main/resources/log4j.properties
 
b/mnemonic-memory-services/mnemonic-nvml-pmem-service/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- 
a/mnemonic-memory-services/mnemonic-nvml-pmem-service/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git 
a/mnemonic-memory-services/mnemonic-nvml-pmem-service/src/main/resources/log4j2.xml
 
b/mnemonic-memory-services/mnemonic-nvml-pmem-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ 
b/mnemonic-memory-services/mnemonic-nvml-pmem-service/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-memory-services/mnemonic-nvml-vmem-service/src/main/resources/log4j.properties
 
b/mnemonic-memory-services/mnemonic-nvml-vmem-service/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- 
a/mnemonic-memory-services/mnemonic-nvml-vmem-service/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git 
a/mnemonic-memory-services/mnemonic-nvml-vmem-service/src/main/resources/log4j2.xml
 
b/mnemonic-memory-services/mnemonic-nvml-vmem-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ 
b/mnemonic-memory-services/mnemonic-nvml-vmem-service/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-memory-services/mnemonic-pmalloc-service/src/main/resources/log4j.properties
 
b/mnemonic-memory-services/mnemonic-pmalloc-service/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- 
a/mnemonic-memory-services/mnemonic-pmalloc-service/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git 
a/mnemonic-memory-services/mnemonic-pmalloc-service/src/main/resources/log4j2.xml
 
b/mnemonic-memory-services/mnemonic-pmalloc-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ 
b/mnemonic-memory-services/mnemonic-pmalloc-service/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-memory-services/mnemonic-pmdk-pmem-service/src/main/resources/log4j.properties
 
b/mnemonic-memory-services/mnemonic-pmdk-pmem-service/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- 
a/mnemonic-memory-services/mnemonic-pmdk-pmem-service/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git 
a/mnemonic-memory-services/mnemonic-pmdk-pmem-service/src/main/resources/log4j2.xml
 
b/mnemonic-memory-services/mnemonic-pmdk-pmem-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ 
b/mnemonic-memory-services/mnemonic-pmdk-pmem-service/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-memory-services/mnemonic-pmdk-vmem-service/src/main/resources/log4j.properties
 
b/mnemonic-memory-services/mnemonic-pmdk-vmem-service/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- 
a/mnemonic-memory-services/mnemonic-pmdk-vmem-service/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git 
a/mnemonic-memory-services/mnemonic-pmdk-vmem-service/src/main/resources/log4j2.xml
 
b/mnemonic-memory-services/mnemonic-pmdk-vmem-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ 
b/mnemonic-memory-services/mnemonic-pmdk-vmem-service/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-memory-services/mnemonic-redis-service/src/main/resources/log4j.properties
 
b/mnemonic-memory-services/mnemonic-redis-service/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- 
a/mnemonic-memory-services/mnemonic-redis-service/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git 
a/mnemonic-memory-services/mnemonic-redis-service/src/main/resources/log4j2.xml 
b/mnemonic-memory-services/mnemonic-redis-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ 
b/mnemonic-memory-services/mnemonic-redis-service/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-memory-services/mnemonic-sys-vmem-service/src/main/resources/log4j.properties
 
b/mnemonic-memory-services/mnemonic-sys-vmem-service/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- 
a/mnemonic-memory-services/mnemonic-sys-vmem-service/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git 
a/mnemonic-memory-services/mnemonic-sys-vmem-service/src/main/resources/log4j2.xml
 
b/mnemonic-memory-services/mnemonic-sys-vmem-service/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ 
b/mnemonic-memory-services/mnemonic-sys-vmem-service/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git a/mnemonic-sessions/src/main/resources/log4j.properties 
b/mnemonic-sessions/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- a/mnemonic-sessions/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git a/mnemonic-sessions/src/main/resources/log4j2.xml 
b/mnemonic-sessions/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ b/mnemonic-sessions/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>
diff --git 
a/mnemonic-spark/mnemonic-spark-core/src/main/resources/log4j.properties 
b/mnemonic-spark/mnemonic-spark-core/src/main/resources/log4j.properties
deleted file mode 100644
index 24b0e3c..0000000
--- a/mnemonic-spark/mnemonic-spark-core/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Root logger option
-log4j.rootLogger=INFO, file, stdout
-
-#to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
-
-#to log.log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=log.log
-log4j.appender.file.MaxFileSize=10MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: 
%m%n
diff --git a/mnemonic-spark/mnemonic-spark-core/src/main/resources/log4j2.xml 
b/mnemonic-spark/mnemonic-spark-core/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..92e9bbb
--- /dev/null
+++ b/mnemonic-spark/mnemonic-spark-core/src/main/resources/log4j2.xml
@@ -0,0 +1,121 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="warn">
+    <Properties>
+        <Property name="service">api</Property>
+        <Property name="logFileRoot">/data/soft/log</Property>
+        <Property name="pattern">[%p %d] %c{1.} [%t] %m%n</Property>
+    </Properties>
+    <Appenders>
+        <RollingRandomAccessFile name="fileAppender" 
fileName="${logFileRoot}/${service}.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="otherAppender" 
fileName="${logFileRoot}/${service}-other.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-other-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="paodingAppender" 
fileName="${logFileRoot}/${service}-paoding.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-paoding-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="passportAppender" 
fileName="${logFileRoot}/${service}-passport.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-passport-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingRandomAccessFile name="rootAppender" 
fileName="${logFileRoot}/${service}-root.log"
+                                 
filePattern="${logFileRoot}/bk/${service}-root-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <Pattern>${pattern}</Pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingRandomAccessFile>
+        <RollingFile name="XLOGGER_SELF_APPENDER" 
fileName="${logFileRoot}/xlogger-self.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-self-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+                <SizeBasedTriggeringPolicy size="100MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="10"/>
+        </RollingFile>
+        <RollingFile name="trace-log" 
fileName="${logFileRoot}/xlogger-trace.log"
+                     
filePattern="${logFileRoot}/bk/xlogger-trace-%d{yyyy-MM-dd}-%i.log.gz">
+            <PatternLayout>
+                <pattern>${pattern}</pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
+            </Policies>
+        </RollingFile>
+        <ScribeXLogger name="Scribe" cluster="${xlogger-cluster}" 
blockWhenBufferFull="false" />
+    </Appenders>
+    <Loggers>
+        <AsyncLogger name="com.xxx.vip" level="${log4j_level}" 
additivity="false">
+            <AppenderRef ref="fileAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="net.paoding.rose" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="paodingAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.passport" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="passportAppender"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx" level="${log4j_other_level}" 
additivity="false">
+            <AppenderRef ref="otherAppender"/>
+        </AsyncLogger>
+
+        <AsyncLogger name="com.xxx.common.logger.v2.XLogger" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="Scribe"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.XLoggerJson" 
level="${log4j_level}" additivity="false">
+            <AppenderRef ref="trace-log"/>
+        </AsyncLogger>
+        <AsyncLogger name="com.xxx.common.logger.v2.ThriftScribeAppender" 
level="${log4j_level}" additivity="false" >
+            <AppenderRef ref="XLOGGER_SELF_APPENDER"/>
+        </AsyncLogger>
+
+        <AsyncRoot level="${log4j_level}">
+            <AppenderRef ref="rootAppender"/>
+        </AsyncRoot>
+    </Loggers>
+</Configuration>

Reply via email to