You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by si...@apache.org on 2023/04/27 22:38:59 UTC

[atlas] branch branch-2.0 updated: ATLAS-4739: Log4j migration - Replace DailyRollingFileAppender with RollingFileAppender

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

sidmishra pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 8e496d389 ATLAS-4739: Log4j migration - Replace DailyRollingFileAppender with RollingFileAppender
8e496d389 is described below

commit 8e496d38995df9626a009e6d9b653951e6e93738
Author: dishatalreja <di...@cloudera.com>
AuthorDate: Mon Apr 10 14:25:23 2023 -0700

    ATLAS-4739: Log4j migration - Replace DailyRollingFileAppender with RollingFileAppender
    
    Signed-off-by: Sidharth Mishra <si...@apache.org>
    (cherry picked from commit b9ea823103bf4918e18fac64efd817818e1a6db8)
---
 .../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