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 2021/08/03 05:59:21 UTC
[atlas] 06/11: ATLAS-4215: updated notification module to handle
failure in finding org.apache.logging.log4j library
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
commit 753d4c2b1b902b56aff5cc03c889b364348f3cad
Author: Madhan Neethiraj <ma...@apache.org>
AuthorDate: Thu Mar 18 18:12:41 2021 -0700
ATLAS-4215: updated notification module to handle failure in finding org.apache.logging.log4j library
(cherry picked from commit acb9880fa0f24089f7e566cc69436a074814df6a)
---
.../apache/atlas/notification/LogConfigUtils.java | 117 +++++++++++++++------
1 file changed, 84 insertions(+), 33 deletions(-)
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 dc98592..ea9c1ce 100644
--- a/notification/src/main/java/org/apache/atlas/notification/LogConfigUtils.java
+++ b/notification/src/main/java/org/apache/atlas/notification/LogConfigUtils.java
@@ -18,13 +18,6 @@
package org.apache.atlas.notification;
import org.apache.commons.lang.StringUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.config.Configuration;
-import org.apache.logging.log4j.core.LoggerContext;
-import org.apache.logging.log4j.core.appender.FileAppender;
-import org.apache.logging.log4j.core.appender.RollingFileAppender;
-import org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,55 +46,113 @@ public class LogConfigUtils {
}
private static String getFileAppenderPath() {
- String ret = StringUtils.EMPTY;
- LoggerContext loggerContext = (LoggerContext) LogManager.getContext();
- Configuration configuration = loggerContext.getConfiguration();
-
- for (Appender appender : configuration.getAppenders().values()) {
- if (appender instanceof RollingRandomAccessFileAppender) {
- ret = ((RollingRandomAccessFileAppender) appender).getFileName();
- break;
- } else if (appender instanceof RollingFileAppender) {
- ret = ((RollingRandomAccessFileAppender) appender).getFileName();
- break;
- } else if (appender instanceof FileAppender) {
- ret = ((FileAppender) appender).getFileName();
- break;
- } else {
- LOG.info("Could not infer log path from this appender: {}", appender.getClass().getName());
+ String ret = StringUtils.EMPTY;
+
+ try {
+ org.apache.logging.log4j.core.LoggerContext loggerContext = (org.apache.logging.log4j.core.LoggerContext) org.apache.logging.log4j.LogManager.getContext();
+ org.apache.logging.log4j.core.config.Configuration configuration = loggerContext.getConfiguration();
+
+ String rrfaFilename = null;
+ String rfaFilename = null;
+ String faFilename = null;
+
+ // get log file path in the following order:
+ // 1. first RollingRandomAccessFileAppender
+ // 2. first RollingFileAppender, if no RollingRandomAccessFileAppender is found
+ // 3. first FileAppender, if no RollingFileAppender is found
+ for (org.apache.logging.log4j.core.Appender appender : configuration.getAppenders().values()) {
+ if (rrfaFilename == null && appender instanceof org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender) {
+ org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender fileAppender = (org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender) appender;
+
+ rrfaFilename = fileAppender.getFileName();
+
+ LOG.debug("RollingRandomAccessFileAppender(name={}, fileName={})", fileAppender.getName(), fileAppender.getFileName());
+ } else 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;
+
+ rfaFilename = fileAppender.getFileName();
+
+ LOG.debug("RollingFileAppender(name={}, fileName={})", 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;
+
+ faFilename = fileAppender.getFileName();
+
+ LOG.debug("FileAppender(name={}, fileName={})", fileAppender.getName(), fileAppender.getFileName());
+ } else {
+ LOG.info("Could not infer log path from this appender: {}", appender.getClass().getName());
+ }
}
- }
- LOG.info("getFileAppenderPath(): ret={}", ret);
+ if (rrfaFilename != null) {
+ ret = rrfaFilename;
+ } else if (rfaFilename != null) {
+ ret = rfaFilename;
+ } else if (faFilename != null) {
+ ret = faFilename;
+ }
+
+ LOG.info("getFileAppenderPath(): ret={}", ret);
+ } catch (Throwable t) {
+ LOG.info("getFileAppenderPath(): failed to get log path from org.apache.logging.log4j. error: {}", t.getMessage());
+ }
return ret;
}
private static String getFileAppenderPathApproach2() {
- String ret = null;
+ String ret = StringUtils.EMPTY;
try {
org.apache.log4j.Logger rootLogger = org.apache.log4j.Logger.getRootLogger();
Enumeration allAppenders = rootLogger.getAllAppenders();
if (allAppenders != null) {
+ String drfaFilename = null;
+ String rfaFilename = null;
+ String faFilename = null;
+
+ // get log file path in the following order:
+ // 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();
- if (appender instanceof org.apache.log4j.FileAppender) {
+ if (drfaFilename == null && appender instanceof org.apache.log4j.DailyRollingFileAppender) {
+ org.apache.log4j.DailyRollingFileAppender fileAppender = (org.apache.log4j.DailyRollingFileAppender) appender;
+
+ drfaFilename = fileAppender.getFile();
+
+ 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;
+
+ rfaFilename = fileAppender.getFile();
+
+ 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;
- ret = fileAppender.getName();
+ faFilename = fileAppender.getFile();
- break;
+ LOG.debug("FileAppender(name={}, file={}, append={})", fileAppender.getName(), fileAppender.getFile());
}
}
+
+ if (drfaFilename != null) {
+ ret = drfaFilename;
+ } else if (rfaFilename != null) {
+ ret = rfaFilename;
+ } else if (faFilename != null) {
+ ret = faFilename;
+ }
}
- } catch (Exception e) {
- LOG.error("getFileAppenderPathApproach2(): failed to get appender path", e);
- }
- LOG.info("getFileAppenderPathApproach2(): ret={}", ret);
+ LOG.info("getFileAppenderPathApproach2(): ret={}", ret);
+ } catch (Throwable t) {
+ LOG.error("getFileAppenderPathApproach2(): failed to get log path from org.apache.log4j.", t);
+ }
return ret;
}