ATLAS-4739: Log4j migration - Replace DailyRollingFileAppender with RollingFileAppender
Signed-off-by: Sidharth Mishra <sidmishra@apache.org>
diff --git a/notification/src/main/java/org/apache/atlas/hook/FailedMessagesLogger.java b/notification/src/main/java/org/apache/atlas/hook/FailedMessagesLogger.java
index 5488c1c..2118ba6 100644
--- a/notification/src/main/java/org/apache/atlas/hook/FailedMessagesLogger.java
+++ b/notification/src/main/java/org/apache/atlas/hook/FailedMessagesLogger.java
@@ -20,13 +20,18 @@
import org.apache.atlas.notification.LogConfigUtils;
-import org.apache.log4j.DailyRollingFileAppender;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.PatternLayout;
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.appender.RollingFileAppender;
+import org.apache.logging.log4j.core.appender.rolling.TimeBasedTriggeringPolicy;
+import org.apache.logging.log4j.core.config.AppenderRef;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.LoggerConfig;
+import org.apache.logging.log4j.core.layout.PatternLayout;
import java.io.File;
-import java.io.IOException;
/**
* A logger wrapper that can be used to write messages that failed to be sent to a log file.
@@ -35,9 +40,13 @@
public static final String PATTERN_SPEC_TIMESTAMP_MESSAGE_NEWLINE = "%d{ISO8601} %m%n";
public static final String DATE_PATTERN = ".yyyy-MM-dd";
+ private PatternLayout PATTERN_LAYOUT = PatternLayout.newBuilder().withPattern(PATTERN_SPEC_TIMESTAMP_MESSAGE_NEWLINE).build();
- private final Logger logger = Logger.getLogger("org.apache.atlas.hook.FailedMessagesLogger");
private String failedMessageFile;
+ private String loggerName = "org.apache.atlas.hook.FailedMessagesLogger";
+ private final Logger logger = LogManager.getLogger(loggerName);
+ private static final LoggerContext ctx = (LoggerContext)LogManager.getContext(false);
+ private static final Configuration config = ctx.getConfiguration();
public FailedMessagesLogger(String failedMessageFile) {
this.failedMessageFile = failedMessageFile;
@@ -49,18 +58,26 @@
return;
}
String absolutePath = new File(rootLoggerDirectory, failedMessageFile).getAbsolutePath();
- try {
- DailyRollingFileAppender failedLogFilesAppender = new DailyRollingFileAppender(
- new PatternLayout(PATTERN_SPEC_TIMESTAMP_MESSAGE_NEWLINE), absolutePath, DATE_PATTERN);
- logger.addAppender(failedLogFilesAppender);
- logger.setLevel(Level.ERROR);
- logger.setAdditivity(false);
- } catch (IOException e) {
- e.printStackTrace();
- }
+
+ RollingFileAppender.Builder builder = RollingFileAppender.newBuilder()
+ .setName("RollingFileAppender")
+ .withFileName(absolutePath)
+ .withFilePattern(absolutePath+"-%d{yyyy-MM-dd}-%i")
+ .setLayout(PATTERN_LAYOUT).withPolicy(TimeBasedTriggeringPolicy.createPolicy("1", "true"));
+ RollingFileAppender rollingFileAppender = builder.build();
+ rollingFileAppender.start();
+ config.addAppender(rollingFileAppender);
+
+ AppenderRef ref = AppenderRef.createAppenderRef(loggerName, Level.ERROR,null);
+ AppenderRef[] refs = new AppenderRef[] {ref};
+ LoggerConfig loggerConfig =
+ LoggerConfig.createLogger(false, Level.ERROR, loggerName, "true", refs, null, config, null);
+ loggerConfig.addAppender(rollingFileAppender, null, null);
+ config.addLogger(loggerName, loggerConfig);
+ ctx.updateLoggers();
}
public void log(String message) {
logger.error(message);
}
-}
+}
\ No newline at end of file
diff --git a/notification/src/main/java/org/apache/atlas/notification/LogConfigUtils.java b/notification/src/main/java/org/apache/atlas/notification/LogConfigUtils.java
index ea9c1ce..f2e50c5 100644
--- a/notification/src/main/java/org/apache/atlas/notification/LogConfigUtils.java
+++ b/notification/src/main/java/org/apache/atlas/notification/LogConfigUtils.java
@@ -18,11 +18,13 @@
package org.apache.atlas.notification;
import org.apache.commons.lang.StringUtils;
+import org.apache.logging.log4j.core.Appender;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
-import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Map;
public class LogConfigUtils {
private static final Logger LOG = LoggerFactory.getLogger(LogConfigUtils.class);
@@ -104,11 +106,10 @@
String ret = StringUtils.EMPTY;
try {
- org.apache.log4j.Logger rootLogger = org.apache.log4j.Logger.getRootLogger();
- Enumeration allAppenders = rootLogger.getAllAppenders();
+ org.apache.logging.log4j.Logger rootLogger = org.apache.logging.log4j.LogManager.getRootLogger();
+ Map<String, Appender> allAppenders = ((org.apache.logging.log4j.core.Logger) rootLogger).getAppenders();
if (allAppenders != null) {
- String drfaFilename = null;
String rfaFilename = null;
String faFilename = null;
@@ -116,33 +117,26 @@
// 1. first DailyRollingFileAppender
// 2. first RollingFileAppender, if no DailyRollingFileAppender is found
// 3. first FileAppender, if no RollingFileAppender is found
- while (allAppenders.hasMoreElements()) {
- Object appender = allAppenders.nextElement();
+ Iterator<Map.Entry<String, Appender>> iterator = allAppenders.entrySet().iterator();
+ while (iterator.hasNext()) {
+ Object appender = iterator.next().getValue();
- if (drfaFilename == null && appender instanceof org.apache.log4j.DailyRollingFileAppender) {
- org.apache.log4j.DailyRollingFileAppender fileAppender = (org.apache.log4j.DailyRollingFileAppender) appender;
+ if (rfaFilename == null && appender instanceof org.apache.logging.log4j.core.appender.RollingFileAppender) {
+ org.apache.logging.log4j.core.appender.RollingFileAppender fileAppender = (org.apache.logging.log4j.core.appender.RollingFileAppender) appender;
- drfaFilename = fileAppender.getFile();
+ rfaFilename = fileAppender.getFileName();
- LOG.debug("DailyRollingFileAppender(name={}, file={})", fileAppender.getName(), fileAppender.getFile());
- } else if (rfaFilename == null && appender instanceof org.apache.log4j.RollingFileAppender) {
- org.apache.log4j.RollingFileAppender fileAppender = (org.apache.log4j.RollingFileAppender) appender;
+ LOG.debug("RollingFileAppender(name={}, file={}, append={})", fileAppender.getName(), fileAppender.getFileName());
+ } else if (faFilename == null && appender instanceof org.apache.logging.log4j.core.appender.FileAppender) {
+ org.apache.logging.log4j.core.appender.FileAppender fileAppender = (org.apache.logging.log4j.core.appender.FileAppender) appender;
- rfaFilename = fileAppender.getFile();
+ faFilename = fileAppender.getFileName();
- LOG.debug("RollingFileAppender(name={}, file={}, append={})", fileAppender.getName(), fileAppender.getFile());
- } else if (faFilename == null && appender instanceof org.apache.log4j.FileAppender) {
- org.apache.log4j.FileAppender fileAppender = (org.apache.log4j.FileAppender) appender;
-
- faFilename = fileAppender.getFile();
-
- LOG.debug("FileAppender(name={}, file={}, append={})", fileAppender.getName(), fileAppender.getFile());
+ LOG.debug("FileAppender(name={}, file={}, append={})", fileAppender.getName(), fileAppender.getFileName());
}
}
- if (drfaFilename != null) {
- ret = drfaFilename;
- } else if (rfaFilename != null) {
+ if (rfaFilename != null) {
ret = rfaFilename;
} else if (faFilename != null) {
ret = faFilename;
@@ -151,9 +145,9 @@
LOG.info("getFileAppenderPathApproach2(): ret={}", ret);
} catch (Throwable t) {
- LOG.error("getFileAppenderPathApproach2(): failed to get log path from org.apache.log4j.", t);
+ LOG.error("getFileAppenderPathApproach2(): failed to get log path from org.apache.logging.log4j.", t);
}
return ret;
}
-}
+}
\ No newline at end of file