diff --git a/build-ivysettings.xml b/build-ivysettings.xml
index a91e90aa9fe..d58d40b23aa 100644
--- a/build-ivysettings.xml
+++ b/build-ivysettings.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/common/src/java/com/zimbra/common/util/LogFactory.java b/common/src/java/com/zimbra/common/util/LogFactory.java
index 7069522e566..ad7ff4a1743 100644
--- a/common/src/java/com/zimbra/common/util/LogFactory.java
+++ b/common/src/java/com/zimbra/common/util/LogFactory.java
@@ -40,11 +40,7 @@ private LogFactory() {
}
public synchronized static void init() {
- try {
- Configurator.initialize(null, LC.zimbra_log4j_properties.value());
- } catch (Exception e) {
- ZimbraLog.misc.info("Error initializing the loggers.", e);
- }
+ Configurator.initialize(null, LC.zimbra_log4j_properties.value());
}
public synchronized static void reset() {
@@ -55,11 +51,7 @@ public synchronized static void reset() {
log.removeAccountLoggers();
}
LogManager.shutdown(true);
- try {
- Configurator.initialize(null, LC.zimbra_log4j_properties.value());
- } catch (Exception e) {
- ZimbraLog.misc.info("Error resetting the loggers.", e);
- }
+ Configurator.initialize(null, LC.zimbra_log4j_properties.value());
}
public static Log getLog(Class> clazz) {
diff --git a/common/src/java/com/zimbra/common/util/ZimbraLog.java b/common/src/java/com/zimbra/common/util/ZimbraLog.java
index d56441c56c7..a7600f62b53 100644
--- a/common/src/java/com/zimbra/common/util/ZimbraLog.java
+++ b/common/src/java/com/zimbra/common/util/ZimbraLog.java
@@ -895,23 +895,24 @@ public static void toolSetupLog4j(String defaultLevel, String logFile, boolean s
}
builder.add(appenderBuilder.add(layoutBuilder));
- // create a rolling file appender
- ComponentBuilder policy = builder.newComponent(POLICY_TYPE)
- .addComponent(builder.newComponent(POLICY_TIME_TYPE).addAttribute(POLICY_TIME_TYPE_INTERVAL, POLICY_TIME_TYPE_INTERVAL_VALUE));
- appenderBuilder = builder.newAppender(APPENDER_NAME, APPENDER_TYPE)
- .addAttribute(APPENDER_FILE_NAME, logFile)
- .addAttribute(APPENDER_FILE_PATTERN, logFile.substring(0, logFile.lastIndexOf(".log")) + "-%d{yyyy-MM-dd}")
- .add(layoutBuilder)
- .addComponent(policy);
- builder.add(appenderBuilder);
-
- // create the new logger
- builder.add(builder.newLogger(LOGGER_NAME, level)
- .add(builder.newAppenderRef(APPENDER_NAME))
- .addAttribute(LOGGER_ADDITIVITY, false));
-
+ if (null != logFile) {
+ // create a rolling file appender
+ ComponentBuilder policy = builder.newComponent(POLICY_TYPE)
+ .addComponent(builder.newComponent(POLICY_TIME_TYPE).addAttribute(POLICY_TIME_TYPE_INTERVAL, POLICY_TIME_TYPE_INTERVAL_VALUE));
+ appenderBuilder = builder.newAppender(APPENDER_NAME, APPENDER_TYPE)
+ .addAttribute(APPENDER_FILE_NAME, logFile)
+ .addAttribute(APPENDER_FILE_PATTERN, logFile.substring(0, logFile.lastIndexOf(".log")) + "-%d{yyyy-MM-dd}")
+ .add(layoutBuilder)
+ .addComponent(policy);
+ builder.add(appenderBuilder);
+
+ // create the new logger
+ builder.add(builder.newLogger(LOGGER_NAME, level)
+ .add(builder.newAppenderRef(APPENDER_NAME))
+ .addAttribute(LOGGER_ADDITIVITY, false));
+ }
builder.add(builder.newRootLogger(level)
- .add(builder.newAppenderRef(APPENDER_NAME)));
+ .add(builder.newAppenderRef(DEFAULT_APPENDER_NAME)));
Configurator.initialize(builder.build());
}
diff --git a/milter-conf/conf/milter.log4j.properties b/milter-conf/conf/milter.log4j.properties
index d24db8990c5..c06ac349fd9 100644
--- a/milter-conf/conf/milter.log4j.properties
+++ b/milter-conf/conf/milter.log4j.properties
@@ -1,20 +1,34 @@
-# An example log4j configuration file that outputs to System.out. The
-# output information consists of relative time, log level, thread
-# name, logger name, nested diagnostic context and the message in that
-# order.
+status = error
+dest = err
+name = PropertiesConfig
+packages = com.zimbra
-# For the general syntax of property based configuration files see the
-# documenation of org.apache.log4j.PropertyConfigurator.
+# Appender MILTER writes to the file "/opt/zimbra/log/mailbox.log".
+# Daily rolling policy with compressing the old log file while rotating!!
+# The archived log files location can be changed using FileNamePattern value
-log4j.threshhold=OFF
-log4j.rootLogger=INFO,MILTER
-log4j.appender.MILTER=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.MILTER.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.MILTER.RollingPolicy.FileNamePattern=/opt/zimbra/log/milter.log.%d{yyyy-MM-dd}
-log4j.appender.MILTER.File=/opt/zimbra/log/milter.log
-log4j.appender.MILTER.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.MILTER.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
-log4j.additivity.zimbra.milter=false
-log4j.logger.zimbra.milter=INFO,MILTER
-log4j.additivity.zimbra.security=false
-log4j.logger.zimbra.security=INFO,MILTER
+# Reference https://logging.apache.org/log4j/2.0/manual/configuration.html#ConfigurationSyntax
+
+appender.MILTER.type = RollingFile
+appender.MILTER.name = milterFile
+appender.MILTER.fileName = /opt/zimbra/log/milter.log
+appender.MILTER.filePattern = /opt/zimbra/log/milter.log.%d{yyyy-MM-dd}
+appender.MILTER.layout.type = PatternLayout
+appender.MILTER.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.MILTER.policies.type = Policies
+appender.MILTER.policies.time.type = TimeBasedTriggeringPolicy
+appender.MILTER.policies.time.interval = 2
+appender.MILTER.policies.time.modulate = true
+appender.MILTER.strategy.type = DefaultRolloverStrategy
+
+logger.milter.name = zimbra.milter
+logger.milter.level = info,MILTER
+logger.milter.additivity = false
+logger.milter.appenderRef.MILTER.ref = milterFile
+
+logger.security.name = zimbra.security
+logger.security.level = info,MILTER
+logger.security.additivity = false
+
+rootLogger=info,MILTER
+rootLogger.appenderRef.MILTER.ref = milterFile
diff --git a/store-conf/conf/imapd.log4j.properties b/store-conf/conf/imapd.log4j.properties
index bb587aaf3b2..bfa935e0e6c 100755
--- a/store-conf/conf/imapd.log4j.properties
+++ b/store-conf/conf/imapd.log4j.properties
@@ -4,7 +4,12 @@
# order.
# For the general syntax of property based configuration files see the
-# documenation of org.apache.log4j.PropertyConfigurator.
+# Reference https://logging.apache.org/log4j/2.0/manual/configuration.html#ConfigurationSyntax
+
+status = error
+dest = err
+name = PropertiesConfig
+packages = com.zimbra
log4j.threshhold=OFF
@@ -14,40 +19,64 @@ log4j.rootLogger=INFO,LOGFILE
# Appender LOGFILE writes to the file "/opt/zimbra/log/imapd.log".
# Daily rolling policy with compressing the old log file while rotating!!
# The archived log files location can be changed using FileNamePattern value
-log4j.appender.LOGFILE=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.LOGFILE.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.LOGFILE.RollingPolicy.FileNamePattern=/opt/zimbra/log/imapd.log.%d{yyyy-MM-dd}
-log4j.appender.LOGFILE.File=/opt/zimbra/log/imapd.log
-log4j.appender.LOGFILE.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.LOGFILE.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
-
+appender.LOGFILE.type = RollingFile
+appender.LOGFILE.name = imapdFile
+appender.LOGFILE.fileName = /opt/zimbra/log/imapd.log
+appender.LOGFILE.filePattern = /opt/zimbra/log/imapd.log.%d{yyyy-MM-dd}
+appender.LOGFILE.layout.type = PatternLayout
+appender.LOGFILE.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.LOGFILE.policies.type = Policies
+appender.LOGFILE.policies.time.type = TimeBasedTriggeringPolicy
+appender.LOGFILE.policies.time.interval = 2
+appender.LOGFILE.policies.time.modulate = true
+appender.LOGFILE.strategy.type = DefaultRolloverStrategy
+
# Appender AUDIT writes to the file "imapd-audit.log".
-log4j.appender.AUDIT=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.AUDIT.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.AUDIT.RollingPolicy.FileNamePattern=/opt/zimbra/log/imapd-audit.log.%d{yyyy-MM-dd}
-log4j.appender.AUDIT.File=/opt/zimbra/log/imapd-audit.log
-log4j.appender.AUDIT.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.AUDIT.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
-
-# Save zimbra.security to AUDIT appender
-log4j.additivity.zimbra.security=false
-log4j.logger.zimbra.security=INFO,AUDIT
+appender.AUDIT.type = RollingFile
+appender.AUDIT.name = auditFile
+appender.AUDIT.fileName = /opt/zimbra/log/imapd-audit.log
+appender.AUDIT.filePattern = /opt/zimbra/log/imapd-audit.log.%d{yyyy-MM-dd}
+appender.AUDIT.layout.type = PatternLayout
+appender.AUDIT.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.AUDIT.policies.type = Policies
+appender.AUDIT.policies.time.type = TimeBasedTriggeringPolicy
+appender.AUDIT.policies.time.interval = 2
+appender.AUDIT.policies.time.modulate = true
+appender.AUDIT.strategy.type = DefaultRolloverStrategy
# Syslog appender
-log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
-log4j.appender.SYSLOG.SyslogHost=localhost
-log4j.appender.SYSLOG.Facility=LOCAL0
-log4j.appender.SYSLOG.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.SYSLOG.layout.ConversionPattern=imap: %-5p [%t] [%z] %c{1} - %m
+appender.SYSLOG.type = Syslog
+appender.SYSLOG.name = syslogAppender
+appender.SYSLOG.host = localhost
+appender.SYSLOG.facility = LOCAL0
+appender.SYSLOG.layout.type = PatternLayout
+appender.SYSLOG.layout.pattern = imap: %-5p [%t] [%z] %c{1} - %m
+
+logger.zimbra.name = zimbra.imap
+logger.zimbra.level = info
+logger.zimbra.additivity = false
+logger.zimbra.appenderRef.LOGFILE.ref = imapdFile
+logger.imap-client.name = zimbra.imap-client
+logger.imap-client.level = info
+logger.imap-client.additivity = false
+
+# Save zimbra.security to AUDIT appender
+logger.security.name = zimbra.security
+logger.security.level = debug, AUDIT
+logger.security.additivity = false
+logger.security.appenderRef.AUDIT.ref = auditFile
+
+logger.syslog.name = com.zimbra
+logger.syslog.level = debug
+logger.syslog.additivity = false
+logger.syslog.appenderRef.SYSLOG.ref = syslogAppender
# HttpMethodBase spews out too many WARN on the badly formatted cookies.
-log4j.logger.org.apache.commons.httpclient.HttpMethodBase=ERROR
+#log4j.logger.org.apache.commons.httpclient.HttpMethodBase=ERROR
# spymemcached is too verbose at INFO level.
-log4j.logger.net.spy.memcached=WARN
-
-log4j.logger.zimbra=INFO
-log4j.logger.zimbra.op=WARN
-log4j.logger.com.zimbra=INFO
+#log4j.logger.net.spy.memcached=WARN
+rootLogger.level=info
+rootLogger.appenderRef.LOGFILE.ref = imapdFile
diff --git a/store-conf/conf/log4j.properties b/store-conf/conf/log4j.properties
index 5e2ac0ae84b..ef70352eeb4 100644
--- a/store-conf/conf/log4j.properties
+++ b/store-conf/conf/log4j.properties
@@ -1,142 +1,240 @@
-# An example log4j configuration file that outputs to System.out. The
-# output information consists of relative time, log level, thread
-# name, logger name, nested diagnostic context and the message in that
-# order.
+status = error
+dest = err
+name = PropertiesConfig
+packages = com.zimbra
-# For the general syntax of property based configuration files see the
-# documenation of org.apache.log4j.PropertyConfigurator.
-
-log4j.threshhold=OFF
-
-log4j.rootLogger=INFO,CONSOLE,LOGFILE
-
-# CONSOLE is set to be a ConsoleAppender which outputs to System.out.
-log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
-log4j.appender.CONSOLE.layout=com.zimbra.common.util.ZimbraPatternLayout
-
-# The conversion pattern uses format specifiers. You might want to
-# change the pattern an watch the output format change.
-log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p [%t] [%z] %c{1} - %m%n
-
-# Appender LOGFILE writes to the file "mailbox.log".
+# Appender LOGFILE writes to the file "/opt/zimbra/log/mailbox.log".
# Daily rolling policy with compressing the old log file while rotating!!
# The archived log files location can be changed using FileNamePattern value
-log4j.appender.LOGFILE=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.LOGFILE.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.LOGFILE.RollingPolicy.FileNamePattern=/opt/zimbra/log/mailbox.log.%d{yyyy-MM-dd}
-log4j.appender.LOGFILE.File=/opt/zimbra/log/mailbox.log
-log4j.appender.LOGFILE.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.LOGFILE.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+# Reference https://logging.apache.org/log4j/2.0/manual/configuration.html#ConfigurationSyntax
+
+appender.A1.type = Console
+appender.A1.name = STDOUT
+appender.A1.layout.type = PatternLayout
+appender.A1.layout.pattern = %m%n
+
+appender.LOGFILE.type = RollingFile
+appender.LOGFILE.name = mailboxFile
+appender.LOGFILE.fileName = /opt/zimbra/log/mailbox.log
+appender.LOGFILE.filePattern = /opt/zimbra/log/mailbox.log.%d{yyyy-MM-dd}
+appender.LOGFILE.layout.type = PatternLayout
+appender.LOGFILE.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.LOGFILE.policies.type = Policies
+appender.LOGFILE.policies.time.type = TimeBasedTriggeringPolicy
+appender.LOGFILE.policies.time.interval = 2
+appender.LOGFILE.policies.time.modulate = true
+appender.LOGFILE.strategy.type = DefaultRolloverStrategy
+
# Appender AUDIT writes to the file "audit.log".
-log4j.appender.AUDIT=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.AUDIT.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.AUDIT.RollingPolicy.FileNamePattern=/opt/zimbra/log/audit.log.%d{yyyy-MM-dd}
-log4j.appender.AUDIT.File=/opt/zimbra/log/audit.log
-log4j.appender.AUDIT.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.AUDIT.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.AUDIT.type = RollingFile
+appender.AUDIT.name = auditFile
+appender.AUDIT.fileName = /opt/zimbra/log/audit.log
+appender.AUDIT.filePattern = /opt/zimbra/log/audit.log.%d{yyyy-MM-dd}
+appender.AUDIT.layout.type = PatternLayout
+appender.AUDIT.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.AUDIT.policies.type = Policies
+appender.AUDIT.policies.time.type = TimeBasedTriggeringPolicy
+appender.AUDIT.policies.time.interval = 2
+appender.AUDIT.policies.time.modulate = true
+appender.AUDIT.strategy.type = DefaultRolloverStrategy
# Appender SYNC writes to the file "sync.log".
-log4j.appender.SYNC=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.SYNC.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.SYNC.RollingPolicy.FileNamePattern=/opt/zimbra/log/sync.log.%d{yyyy-MM-dd}
-log4j.appender.SYNC.File=/opt/zimbra/log/sync.log
-log4j.appender.SYNC.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.SYNC.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNC.type = RollingFile
+appender.SYNC.name = syncFile
+appender.SYNC.fileName = /opt/zimbra/log/sync.log
+appender.SYNC.filePattern = /opt/zimbra/log/sync.log.%d{yyyy-MM-dd}
+appender.SYNC.layout.type = PatternLayout
+appender.SYNC.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNC.policies.type = Policies
+appender.SYNC.policies.time.type = TimeBasedTriggeringPolicy
+appender.SYNC.policies.time.interval = 2
+appender.SYNC.policies.time.modulate = true
+appender.SYNC.strategy.type = DefaultRolloverStrategy
# Appender SYNCTRACE writes to the file "synctrace.log".
-log4j.appender.SYNCTRACE=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.SYNCTRACE.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.SYNCTRACE.RollingPolicy.FileNamePattern=/opt/zimbra/log/synctrace.log.%d{yyyy-MM-dd}
-log4j.appender.SYNCTRACE.File=/opt/zimbra/log/synctrace.log
-log4j.appender.SYNCTRACE.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.SYNCTRACE.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNCTRACE.type = RollingFile
+appender.SYNCTRACE.name = syncTraceFile
+appender.SYNCTRACE.fileName = /opt/zimbra/log/synctrace.log
+appender.SYNCTRACE.filePattern = /opt/zimbra/log/synctrace.log.%d{yyyy-MM-dd}
+appender.SYNCTRACE.layout.type = PatternLayout
+appender.SYNCTRACE.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNCTRACE.policies.type = Policies
+appender.SYNCTRACE.policies.time.type = TimeBasedTriggeringPolicy
+appender.SYNCTRACE.policies.time.interval = 2
+appender.SYNCTRACE.policies.time.modulate = true
+appender.SYNCTRACE.strategy.type = DefaultRolloverStrategy
# Appender SYNCSTATE writes to the file "syncstate.log".
-log4j.appender.SYNCSTATE=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.SYNCSTATE.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.SYNCSTATE.RollingPolicy.FileNamePattern=/opt/zimbra/log/syncstate.log.%d{yyyy-MM-dd}
-log4j.appender.SYNCSTATE.File=/opt/zimbra/log/syncstate.log
-log4j.appender.SYNCSTATE.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.SYNCSTATE.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNCSTATE.type = RollingFile
+appender.SYNCSTATE.name = syncStateFile
+appender.SYNCSTATE.fileName = /opt/zimbra/log/syncstate.log
+appender.SYNCSTATE.filePattern = /opt/zimbra/log/syncstate.log.%d{yyyy-MM-dd}
+appender.SYNCSTATE.layout.type = PatternLayout
+appender.SYNCSTATE.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNCSTATE.policies.type = Policies
+appender.SYNCSTATE.policies.time.type = TimeBasedTriggeringPolicy
+appender.SYNCSTATE.policies.time.interval = 2
+appender.SYNCSTATE.policies.time.modulate = true
+appender.SYNCSTATE.strategy.type = DefaultRolloverStrategy
# Appender WBXML writes to the file "wbxml.log".
-log4j.appender.WBXML=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.WBXML.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.WBXML.RollingPolicy.FileNamePattern=/opt/zimbra/log/wbxml.log.%d{yyyy-MM-dd}
-log4j.appender.WBXML.File=/opt/zimbra/log/wbxml.log
-log4j.appender.WBXML.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.WBXML.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.WBXML.type = RollingFile
+appender.WBXML.name = wbXmlFile
+appender.WBXML.fileName = /opt/zimbra/log/wbxml.log
+appender.WBXML.filePattern = /opt/zimbra/log/wbxml.log.%d{yyyy-MM-dd}
+appender.WBXML.layout.type = PatternLayout
+appender.WBXML.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.WBXML.policies.type = Policies
+appender.WBXML.policies.time.type = TimeBasedTriggeringPolicy
+appender.WBXML.policies.time.interval = 2
+appender.WBXML.policies.time.modulate = true
+appender.WBXML.strategy.type = DefaultRolloverStrategy
# Appender ACTIVITY writes to the file "activity.log".
-log4j.appender.ACTIVITY=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.ACTIVITY.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.ACTIVITY.RollingPolicy.FileNamePattern=/opt/zimbra/log/activity.log.%d{yyyy-MM-dd}
-log4j.appender.ACTIVITY.File=/opt/zimbra/log/activity.log
-log4j.appender.ACTIVITY.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.ACTIVITY.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.ACTIVITY.type = RollingFile
+appender.ACTIVITY.name = activityFile
+appender.ACTIVITY.fileName = /opt/zimbra/log/activity.log
+appender.ACTIVITY.filePattern = /opt/zimbra/log/activity.log.%d{yyyy-MM-dd}
+appender.ACTIVITY.layout.type = PatternLayout
+appender.ACTIVITY.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.ACTIVITY.policies.type = Policies
+appender.ACTIVITY.policies.time.type = TimeBasedTriggeringPolicy
+appender.ACTIVITY.policies.time.interval = 2
+appender.ACTIVITY.policies.time.modulate = true
+appender.ACTIVITY.strategy.type = DefaultRolloverStrategy
# Appender SEARCHSTAT writes to the file "searchstat.log".
-log4j.appender.SEARCHSTAT=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.SEARCHSTAT.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.SEARCHSTAT.RollingPolicy.FileNamePattern=/opt/zimbra/log/searchstat.log.%d{yyyy-MM-dd}
-log4j.appender.SEARCHSTAT.File=/opt/zimbra/log/searchstat.log
-log4j.appender.SEARCHSTAT.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.SEARCHSTAT.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.SEARCHSTAT.type = RollingFile
+appender.SEARCHSTAT.name = searchStatFile
+appender.SEARCHSTAT.fileName = /opt/zimbra/log/searchstat.log
+appender.SEARCHSTAT.filePattern = /opt/zimbra/log/searchstat.log.%d{yyyy-MM-dd}
+appender.SEARCHSTAT.layout.type = PatternLayout
+appender.SEARCHSTAT.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.SEARCHSTAT.policies.type = Policies
+appender.SEARCHSTAT.policies.time.type = TimeBasedTriggeringPolicy
+appender.SEARCHSTAT.policies.time.interval = 2
+appender.SEARCHSTAT.policies.time.modulate = true
+appender.SEARCHSTAT.strategy.type = DefaultRolloverStrategy
# Appender EWS writes to the file "ews.log".
-log4j.appender.EWS=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.EWS.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.EWS.RollingPolicy.FileNamePattern=/opt/zimbra/log/ews.log.%d{yyyy-MM-dd}
-log4j.appender.EWS.File=/opt/zimbra/log/ews.log
-log4j.appender.EWS.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.EWS.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.EWS.type = RollingFile
+appender.EWS.name = ewsFile
+appender.EWS.fileName = /opt/zimbra/log/ews.log
+appender.EWS.filePattern = /opt/zimbra/log/ews.log.%d{yyyy-MM-dd}
+appender.EWS.layout.type = PatternLayout
+appender.EWS.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.EWS.policies.type = Policies
+appender.EWS.policies.time.type = TimeBasedTriggeringPolicy
+appender.EWS.policies.time.interval = 2
+appender.EWS.policies.time.modulate = true
+appender.EWS.strategy.type = DefaultRolloverStrategy
+
+# Syslog appender
+appender.SYSLOG.type = Syslog
+appender.SYSLOG.name = syslogAppender
+appender.SYSLOG.host = localhost
+appender.SYSLOG.facility = LOCAL0
+appender.SYSLOG.layout.type = PatternLayout
+appender.SYSLOG.layout.pattern = mailboxd: %-5p [%t] [%z] %c{1} - %m
+
+# Logger service appender
+appender.SLOGGER.type = Syslog
+appender.SLOGGER.name = sloggerAppender
+appender.SLOGGER.host = suchit.test.com
+appender.SLOGGER.facility = LOCAL1
+appender.SLOGGER.layout.type = PatternLayout
+appender.SLOGGER.layout.pattern = mailboxd: %-5p [%t] [%z] %c{1} - %m
+
+logger.zimbra.name = zimbra.mailbox
+logger.zimbra.level = debug
+logger.zimbra.additivity = false
+logger.zimbra.appenderRef.LOGFILE.ref = mailboxFile
# Save zimbra.security to AUDIT appender
-log4j.additivity.zimbra.security=false
-log4j.logger.zimbra.security=INFO,AUDIT
+logger.security.name = zimbra.security
+logger.security.level = debug, AUDIT
+logger.security.additivity = false
+logger.security.appenderRef.AUDIT.ref = auditFile
+
+logger.sync.name = zimbra.sync
+logger.sync.level = info,SYNC
+logger.sync.additivity = false
+logger.sync.appenderRef.SYNC.ref = syncFile
+
+logger.synctrace.name = zimbra.synctrace
+logger.synctrace.level = info,SYNCTRACE
+logger.synctrace.additivity = false
+logger.synctrace.appenderRef.SYNCTRACE.ref = syncTraceFile
+
+logger.syncstate.name = zimbra.syncstate
+logger.syncstate.level = info,SYNCSTATE
+logger.syncstate.additivity = false
+logger.syncstate.appenderRef.SYNCSTATE.ref = syncStateFile
+
+logger.wbxml.name = zimbra.wbxml
+logger.wbxml.level = info,WBXML
+logger.wbxml.additivity = false
+logger.wbxml.appenderRef.WBXML.ref = wbXmlFile
+
+logger.activity.name = zimbra.activity
+logger.activity.level = info,ACTIVITY
+logger.activity.additivity = false
+logger.activity.appenderRef.ACTIVITY.ref = activityFile
+
+logger.searchstat.name = zimbra.searchstat
+logger.searchstat.level = info,SEARCHSTAT
+logger.searchstat.additivity = false
+logger.searchstat.appenderRef.SEARCHSTAT.ref = searchStatFile
+
+logger.ews.name = zimbra.ews
+logger.ews.level = info,EWS
+logger.ews.additivity = false
+logger.ews.appenderRef.EWS.ref = ewsFile
+
+logger.syslog.name = com.zimbra
+logger.syslog.level = debug
+logger.syslog.additivity = false
+logger.syslog.appenderRef.SYSLOG.ref = syslogAppender
# HttpMethodBase spews out too many WARN on the badly formatted cookies.
-log4j.logger.org.apache.commons.httpclient.HttpMethodBase=ERROR
+logger.org.apache.commons.httpclient.HttpMethodBase=ERROR
# spymemcached is too verbose at INFO level.
-log4j.logger.net.spy.memcached=WARN
-
-#log4j.logger.httpclient=DEBUG
-#log4j.logger.org.apache.commons.httpclient=DEBUG
-#log4j.logger.com.zimbra.common.util.ZimbraHttpConnectionManager=DEBUG
-
-#log4j.logger.zimbra.imap=DEBUG
-log4j.logger.zimbra.test=DEBUG
-
-log4j.logger.com.zimbra=INFO
-#log4j.logger.com.zimbra=DEBUG
-log4j.logger.com.zimbra.soap.SoapEngine=DEBUG
-#log4j.logger.com.zimbra.cs.store.BlobChunk=DEBUG
-#log4j.logger.com.zimbra.cs.Archiver=DEBUG
-#log4j.logger.com.zimbra.cs=DEBUG
-#log4j.logger.com.zimbra.cs.index=DEBUG
-
-#log4j.logger.zimbra.sqltrace=DEBUG
-log4j.logger.com.zimbra.cs.service.util.SpamHandler=DEBUG
-
-log4j.additivity.zimbra.sync=false
-log4j.logger.zimbra.sync=INFO,SYNC
-log4j.additivity.zimbra.synctrace=false
-log4j.logger.zimbra.synctrace=TRACE,SYNCTRACE
-log4j.additivity.zimbra.syncstate=false
-log4j.logger.zimbra.syncstate=INFO,SYNCSTATE
-log4j.additivity.zimbra.wbxml=false
-log4j.logger.zimbra.wbxml=INFO,WBXML
-log4j.additivity.zimbra.activity=false
-log4j.logger.zimbra.activity=INFO,ACTIVITY
-log4j.additivity.zimbra.ews=false
-log4j.logger.zimbra.ews=INFO,EWS
-log4j.logger.zimbra.doc=DEBUG
-log4j.logger.zimbra.dav=DEBUG
-log4j.logger.zimbra.offline=DEBUG
-log4j.logger.zimbra.offline.request=INFO
-log4j.logger.zimbra.offline.response=INFO
-log4j.logger.zimbra.webclient=DEBUG
-log4j.logger.zimbra.slogger=OFF
-log4j.logger.zimbra.searchstat=INFO,SEARCHSTAT
+logger.net.spy.memcached=WARN
+
+logger.slogger.name = zimbra.slogger
+logger.slogger.level=INFO,SLOGGER
+#logger.slogger.level=ERROR
+logger.slogger.additivity = false
+logger.slogger.appenderRef.SLOGGER.ref = sloggerAppender
+
+logger.soapengine.name = com.zimbra.soap.SoapEngine
+logger.soapengine.level = debug
+
+logger.blobchunk.name = com.zimbra.cs.store.BlobChunk
+logger.blobchunk.level = debug
+
+logger.zimbracs.name = com.zimbra.cs
+logger.zimbracs.level = debug
+
+logger.zimbradoc.name = zimbra.doc
+logger.zimbradoc.level = debug
+
+logger.zimbraoffline.name = zimbra.offline
+logger.zimbraoffline.level = debug
+
+logger.offlinerequest.name = zimbra.offline.request
+logger.offlinerequest.level = debug
+
+logger.offlineresponse.name = zimbra.offline.response
+logger.offlineresponse.level = debug
+
+logger.webclinet.name = zimbra.webclient
+logger.webclinet.level = debug
+
+logger.dav.name = zimbra.dav
+logger.dav.level = debug
+
+rootLogger=INFO,CONSOLE,LOGFILE
+rootLogger.appenderRef.LOGFILE.ref = mailboxFile
diff --git a/store-conf/conf/log4j.properties.production b/store-conf/conf/log4j.properties.production
index 390bd0e5438..767a4b324f4 100644
--- a/store-conf/conf/log4j.properties.production
+++ b/store-conf/conf/log4j.properties.production
@@ -1,131 +1,213 @@
-# An example log4j configuration file that outputs to System.out. The
-# output information consists of relative time, log level, thread
-# name, logger name, nested diagnostic context and the message in that
-# order.
-
-# For the general syntax of property based configuration files see the
-# documenation of org.apache.log4j.PropertyConfigurator.
-
-log4j.threshhold=OFF
-
-%%uncomment VAR:!zimbraLogToSyslog%%log4j.rootLogger=INFO,LOGFILE
-%%uncomment VAR:zimbraLogToSyslog%%log4j.rootLogger=INFO,LOGFILE,SYSLOG
+status = error
+dest = err
+name = PropertiesConfig
+packages = com.zimbra
# Appender LOGFILE writes to the file "/opt/zimbra/log/mailbox.log".
# Daily rolling policy with compressing the old log file while rotating!!
# The archived log files location can be changed using FileNamePattern value
-log4j.appender.LOGFILE=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.LOGFILE.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.LOGFILE.RollingPolicy.FileNamePattern=/opt/zimbra/log/mailbox.log.%d{yyyy-MM-dd}
-log4j.appender.LOGFILE.File=/opt/zimbra/log/mailbox.log
-log4j.appender.LOGFILE.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.LOGFILE.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+# Reference https://logging.apache.org/log4j/2.0/manual/configuration.html#ConfigurationSyntax
+
+appender.LOGFILE.type = RollingFile
+appender.LOGFILE.name = mailboxFile
+appender.LOGFILE.fileName = /opt/zimbra/log/mailbox.log
+appender.LOGFILE.filePattern = /opt/zimbra/log/mailbox.log.%d{yyyy-MM-dd}
+appender.LOGFILE.layout.type = PatternLayout
+appender.LOGFILE.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.LOGFILE.policies.type = Policies
+appender.LOGFILE.policies.time.type = TimeBasedTriggeringPolicy
+appender.LOGFILE.policies.time.interval = 2
+appender.LOGFILE.policies.time.modulate = true
+appender.LOGFILE.strategy.type = DefaultRolloverStrategy
+
# Appender AUDIT writes to the file "audit.log".
-log4j.appender.AUDIT=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.AUDIT.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.AUDIT.RollingPolicy.FileNamePattern=/opt/zimbra/log/audit.log.%d{yyyy-MM-dd}
-log4j.appender.AUDIT.File=/opt/zimbra/log/audit.log
-log4j.appender.AUDIT.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.AUDIT.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
-
-# Save zimbra.security to AUDIT appender
-log4j.additivity.zimbra.security=false
-log4j.logger.zimbra.security=INFO,AUDIT
-
-# Syslog appender
-log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
-log4j.appender.SYSLOG.SyslogHost=localhost
-log4j.appender.SYSLOG.Facility=LOCAL0
-log4j.appender.SYSLOG.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.SYSLOG.layout.ConversionPattern=mailboxd: %-5p [%t] [%z] %c{1} - %m
-
-# Logger service appender
-%%comment VAR:!zimbraLogHostname%%log4j.appender.SLOGGER=org.apache.log4j.net.SyslogAppender
-%%comment VAR:!zimbraLogHostname%%log4j.appender.SLOGGER.SyslogHost=%%zimbraLogHostname%%
-%%comment VAR:!zimbraLogHostname%%log4j.appender.SLOGGER.Facility=LOCAL1
-%%comment VAR:!zimbraLogHostname%%log4j.appender.SLOGGER.layout=com.zimbra.common.util.ZimbraPatternLayout
-%%comment VAR:!zimbraLogHostname%%log4j.appender.SLOGGER.layout.ConversionPattern=mailboxd: %-5p [%t] [%z] %c{1} - %m
+appender.AUDIT.type = RollingFile
+appender.AUDIT.name = auditFile
+appender.AUDIT.fileName = /opt/zimbra/log/audit.log
+appender.AUDIT.filePattern = /opt/zimbra/log/audit.log.%d{yyyy-MM-dd}
+appender.AUDIT.layout.type = PatternLayout
+appender.AUDIT.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.AUDIT.policies.type = Policies
+appender.AUDIT.policies.time.type = TimeBasedTriggeringPolicy
+appender.AUDIT.policies.time.interval = 2
+appender.AUDIT.policies.time.modulate = true
+appender.AUDIT.strategy.type = DefaultRolloverStrategy
# Appender SYNC writes to the file "sync.log".
-log4j.appender.SYNC=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.SYNC.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.SYNC.RollingPolicy.FileNamePattern=/opt/zimbra/log/sync.log.%d{yyyy-MM-dd}
-log4j.appender.SYNC.File=/opt/zimbra/log/sync.log
-log4j.appender.SYNC.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.SYNC.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNC.type = RollingFile
+appender.SYNC.name = syncFile
+appender.SYNC.fileName = /opt/zimbra/log/sync.log
+appender.SYNC.filePattern = /opt/zimbra/log/sync.log.%d{yyyy-MM-dd}
+appender.SYNC.layout.type = PatternLayout
+appender.SYNC.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNC.policies.type = Policies
+appender.SYNC.policies.time.type = TimeBasedTriggeringPolicy
+appender.SYNC.policies.time.interval = 2
+appender.SYNC.policies.time.modulate = true
+appender.SYNC.strategy.type = DefaultRolloverStrategy
# Appender SYNCTRACE writes to the file "synctrace.log".
-log4j.appender.SYNCTRACE=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.SYNCTRACE.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.SYNCTRACE.RollingPolicy.FileNamePattern=/opt/zimbra/log/synctrace.log.%d{yyyy-MM-dd}
-log4j.appender.SYNCTRACE.File=/opt/zimbra/log/synctrace.log
-log4j.appender.SYNCTRACE.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.SYNCTRACE.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNCTRACE.type = RollingFile
+appender.SYNCTRACE.name = syncTraceFile
+appender.SYNCTRACE.fileName = /opt/zimbra/log/synctrace.log
+appender.SYNCTRACE.filePattern = /opt/zimbra/log/synctrace.log.%d{yyyy-MM-dd}
+appender.SYNCTRACE.layout.type = PatternLayout
+appender.SYNCTRACE.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNCTRACE.policies.type = Policies
+appender.SYNCTRACE.policies.time.type = TimeBasedTriggeringPolicy
+appender.SYNCTRACE.policies.time.interval = 2
+appender.SYNCTRACE.policies.time.modulate = true
+appender.SYNCTRACE.strategy.type = DefaultRolloverStrategy
# Appender SYNCSTATE writes to the file "syncstate.log".
-log4j.appender.SYNCSTATE=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.SYNCSTATE.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.SYNCSTATE.RollingPolicy.FileNamePattern=/opt/zimbra/log/syncstate.log.%d{yyyy-MM-dd}
-log4j.appender.SYNCSTATE.File=/opt/zimbra/log/syncstate.log
-log4j.appender.SYNCSTATE.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.SYNCSTATE.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNCSTATE.type = RollingFile
+appender.SYNCSTATE.name = syncStateFile
+appender.SYNCSTATE.fileName = /opt/zimbra/log/syncstate.log
+appender.SYNCSTATE.filePattern = /opt/zimbra/log/syncstate.log.%d{yyyy-MM-dd}
+appender.SYNCSTATE.layout.type = PatternLayout
+appender.SYNCSTATE.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.SYNCSTATE.policies.type = Policies
+appender.SYNCSTATE.policies.time.type = TimeBasedTriggeringPolicy
+appender.SYNCSTATE.policies.time.interval = 2
+appender.SYNCSTATE.policies.time.modulate = true
+appender.SYNCSTATE.strategy.type = DefaultRolloverStrategy
# Appender WBXML writes to the file "wbxml.log".
-log4j.appender.WBXML=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.WBXML.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.WBXML.RollingPolicy.FileNamePattern=/opt/zimbra/log/wbxml.log.%d{yyyy-MM-dd}
-log4j.appender.WBXML.File=/opt/zimbra/log/wbxml.log
-log4j.appender.WBXML.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.WBXML.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.WBXML.type = RollingFile
+appender.WBXML.name = wbXmlFile
+appender.WBXML.fileName = /opt/zimbra/log/wbxml.log
+appender.WBXML.filePattern = /opt/zimbra/log/wbxml.log.%d{yyyy-MM-dd}
+appender.WBXML.layout.type = PatternLayout
+appender.WBXML.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.WBXML.policies.type = Policies
+appender.WBXML.policies.time.type = TimeBasedTriggeringPolicy
+appender.WBXML.policies.time.interval = 2
+appender.WBXML.policies.time.modulate = true
+appender.WBXML.strategy.type = DefaultRolloverStrategy
# Appender ACTIVITY writes to the file "activity.log".
-log4j.appender.ACTIVITY=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.ACTIVITY.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.ACTIVITY.RollingPolicy.FileNamePattern=/opt/zimbra/log/activity.log.%d{yyyy-MM-dd}
-log4j.appender.ACTIVITY.File=/opt/zimbra/log/activity.log
-log4j.appender.ACTIVITY.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.ACTIVITY.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.ACTIVITY.type = RollingFile
+appender.ACTIVITY.name = activityFile
+appender.ACTIVITY.fileName = /opt/zimbra/log/activity.log
+appender.ACTIVITY.filePattern = /opt/zimbra/log/activity.log.%d{yyyy-MM-dd}
+appender.ACTIVITY.layout.type = PatternLayout
+appender.ACTIVITY.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.ACTIVITY.policies.type = Policies
+appender.ACTIVITY.policies.time.type = TimeBasedTriggeringPolicy
+appender.ACTIVITY.policies.time.interval = 2
+appender.ACTIVITY.policies.time.modulate = true
+appender.ACTIVITY.strategy.type = DefaultRolloverStrategy
# Appender SEARCHSTAT writes to the file "searchstat.log".
-log4j.appender.SEARCHSTAT=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.SEARCHSTAT.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.SEARCHSTAT.RollingPolicy.FileNamePattern=/opt/zimbra/log/searchstat.log.%d{yyyy-MM-dd}
-log4j.appender.SEARCHSTAT.File=/opt/zimbra/log/searchstat.log
-log4j.appender.SEARCHSTAT.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.SEARCHSTAT.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.SEARCHSTAT.type = RollingFile
+appender.SEARCHSTAT.name = searchStatFile
+appender.SEARCHSTAT.fileName = /opt/zimbra/log/searchstat.log
+appender.SEARCHSTAT.filePattern = /opt/zimbra/log/searchstat.log.%d{yyyy-MM-dd}
+appender.SEARCHSTAT.layout.type = PatternLayout
+appender.SEARCHSTAT.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.SEARCHSTAT.policies.type = Policies
+appender.SEARCHSTAT.policies.time.type = TimeBasedTriggeringPolicy
+appender.SEARCHSTAT.policies.time.interval = 2
+appender.SEARCHSTAT.policies.time.modulate = true
+appender.SEARCHSTAT.strategy.type = DefaultRolloverStrategy
# Appender EWS writes to the file "ews.log".
-log4j.appender.EWS=org.apache.log4j.rolling.RollingFileAppender
-log4j.appender.EWS.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
-log4j.appender.EWS.RollingPolicy.FileNamePattern=/opt/zimbra/log/ews.log.%d{yyyy-MM-dd}
-log4j.appender.EWS.File=/opt/zimbra/log/ews.log
-log4j.appender.EWS.layout=com.zimbra.common.util.ZimbraPatternLayout
-log4j.appender.EWS.layout.ConversionPattern=%d %-5p [%t] [%z] %c{1} - %m%n
+appender.EWS.type = RollingFile
+appender.EWS.name = ewsFile
+appender.EWS.fileName = /opt/zimbra/log/ews.log
+appender.EWS.filePattern = /opt/zimbra/log/ews.log.%d{yyyy-MM-dd}
+appender.EWS.layout.type = PatternLayout
+appender.EWS.layout.pattern = %d %-5p [%t] [%z] %c{1} - %m%n
+appender.EWS.policies.type = Policies
+appender.EWS.policies.time.type = TimeBasedTriggeringPolicy
+appender.EWS.policies.time.interval = 2
+appender.EWS.policies.time.modulate = true
+appender.EWS.strategy.type = DefaultRolloverStrategy
+
+# Syslog appender
+appender.SYSLOG.type = Syslog
+appender.SYSLOG.name = syslogAppender
+appender.SYSLOG.host = localhost
+appender.SYSLOG.facility = LOCAL0
+appender.SYSLOG.layout.type = PatternLayout
+appender.SYSLOG.layout.pattern = mailboxd: %-5p [%t] [%z] %c{1} - %m
+
+# Logger service appender
+%%comment VAR:!zimbraLogHostname%%appender.SLOGGER.type = Syslog
+%%comment VAR:!zimbraLogHostname%%appender.SLOGGER.name = sloggerAppender
+%%comment VAR:!zimbraLogHostname%%appender.SLOGGER.host = %%zimbraLogHostname%%
+%%comment VAR:!zimbraLogHostname%%appender.SLOGGER.facility = LOCAL1
+%%comment VAR:!zimbraLogHostname%%appender.SLOGGER.layout.type = PatternLayout
+%%comment VAR:!zimbraLogHostname%%appender.SLOGGER.layout.pattern = mailboxd: %-5p [%t] [%z] %c{1} - %m
+
+logger.zimbra.name = zimbra.mailbox
+logger.zimbra.level = info
+logger.zimbra.additivity = false
+logger.zimbra.appenderRef.LOGFILE.ref = mailboxFile
+
+# Save zimbra.security to AUDIT appender
+logger.security.name = zimbra.security
+logger.security.level = debug, AUDIT
+logger.security.additivity = false
+logger.security.appenderRef.AUDIT.ref = auditFile
+
+logger.sync.name = zimbra.sync
+logger.sync.level = info,SYNC
+logger.sync.additivity = false
+logger.sync.appenderRef.SYNC.ref = syncFile
+
+logger.synctrace.name = zimbra.synctrace
+logger.synctrace.level = info,SYNCTRACE
+logger.synctrace.additivity = false
+logger.synctrace.appenderRef.SYNCTRACE.ref = syncTraceFile
+
+logger.syncstate.name = zimbra.syncstate
+logger.syncstate.level = info,SYNCSTATE
+logger.syncstate.additivity = false
+logger.syncstate.appenderRef.SYNCSTATE.ref = syncStateFile
+
+logger.wbxml.name = zimbra.wbxml
+logger.wbxml.level = info,WBXML
+logger.wbxml.additivity = false
+logger.wbxml.appenderRef.WBXML.ref = wbXmlFile
+
+logger.activity.name = zimbra.activity
+logger.activity.level = info,ACTIVITY
+logger.activity.additivity = false
+logger.activity.appenderRef.ACTIVITY.ref = activityFile
+
+logger.searchstat.name = zimbra.searchstat
+logger.searchstat.level = info,SEARCHSTAT
+logger.searchstat.additivity = false
+logger.searchstat.appenderRef.SEARCHSTAT.ref = searchStatFile
+
+logger.ews.name = zimbra.ews
+logger.ews.level = info,EWS
+logger.ews.additivity = false
+logger.ews.appenderRef.EWS.ref = ewsFile
+
+logger.syslog.name = com.zimbra
+logger.syslog.level = debug
+logger.syslog.additivity = false
+logger.syslog.appenderRef.SYSLOG.ref = syslogAppender
# HttpMethodBase spews out too many WARN on the badly formatted cookies.
-log4j.logger.org.apache.commons.httpclient.HttpMethodBase=ERROR
+#logger.org.apache.commons.httpclient.HttpMethodBase=ERROR
+logger.httpmethodbase.name = org.apache.commons.httpclient.HttpMethodBase
+logger.httpmethodbase.level = ERROR
# spymemcached is too verbose at INFO level.
-log4j.logger.net.spy.memcached=WARN
-
-log4j.additivity.zimbra.sync=false
-log4j.logger.zimbra.sync=INFO,SYNC
-log4j.additivity.zimbra.synctrace=false
-log4j.logger.zimbra.synctrace=INFO,SYNCTRACE
-log4j.additivity.zimbra.syncstate=false
-log4j.logger.zimbra.syncstate=INFO,SYNCSTATE
-log4j.additivity.zimbra.wbxml=false
-log4j.logger.zimbra.wbxml=INFO,WBXML
-log4j.additivity.zimbra.activity=false
-log4j.logger.zimbra.activity=INFO,ACTIVITY
-log4j.logger.zimbra.searchstat=INFO,SEARCHSTAT
-log4j.additivity.zimbra.ews=false
-log4j.logger.zimbra.ews=INFO,EWS
-
-log4j.logger.zimbra=INFO
-log4j.logger.zimbra.op=WARN
-log4j.logger.com.zimbra=INFO
-log4j.additivity.zimbra.slogger=FALSE
-%%comment VAR:!zimbraLogHostname%%log4j.logger.zimbra.slogger=INFO,SLOGGER
-%%uncomment VAR:!zimbraLogHostname%%log4j.logger.zimbra.slogger=ERROR
+#logger.net.spy.memcached=WARN
+logger.memcached.name = net.spy.memcached
+logger.memcached.level = WARN
+
+%%comment VAR:!zimbraLogHostname%%logger.slogger.name = zimbra.slogger
+%%comment VAR:!zimbraLogHostname%%logger.slogger.level=INFO,SLOGGER
+%%uncomment VAR:!zimbraLogHostname%%logger.slogger.level=ERROR
+%%comment VAR:!zimbraLogHostname%%logger.slogger.additivity = false
+%%comment VAR:!zimbraLogHostname%%logger.slogger.appenderRef.SLOGGER.ref = sloggerAppender
+
+rootLogger.level=INFO
+
+rootLogger.appenderRef.LOGFILE.ref = mailboxFile
diff --git a/store/build.xml b/store/build.xml
index f9a10532ab6..fdf84d64cd5 100644
--- a/store/build.xml
+++ b/store/build.xml
@@ -270,14 +270,14 @@
-
-
+
+
-
+