This is an automated email from the ASF dual-hosted git repository. sidmishra pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/master by this push: new b9ea82310 ATLAS-4739: Log4j migration - Replace DailyRollingFileAppender with RollingFileAppender b9ea82310 is described below commit b9ea823103bf4918e18fac64efd817818e1a6db8 Author: dishatalreja <dishatalr...@cloudera.com> AuthorDate: Mon Apr 10 14:25:23 2023 -0700 ATLAS-4739: Log4j migration - Replace DailyRollingFileAppender with RollingFileAppender Signed-off-by: Sidharth Mishra <sidmis...@apache.org> --- .../apache/atlas/hook/FailedMessagesLogger.java | 49 +++++++++++++++------- .../apache/atlas/notification/LogConfigUtils.java | 44 +++++++++---------- 2 files changed, 52 insertions(+), 41 deletions(-) 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 5488c1c2c..2118ba605 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 @@ package org.apache.atlas.hook; 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 class FailedMessagesLogger { 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 @@ public class FailedMessagesLogger { 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 ea9c1cecc..f2e50c5d2 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 @@ public class LogConfigUtils { 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 @@ public class LogConfigUtils { // 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 @@ public class LogConfigUtils { 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