You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by me...@apache.org on 2021/08/09 11:41:33 UTC

[ranger] branch master updated: RANNGER-3355 : Update the current logging mechanism to use custom log4j conf

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

mehul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new def49c7  RANNGER-3355 : Update the current logging mechanism to use custom log4j conf
def49c7 is described below

commit def49c74559d24c2c7b0e9244754eebce79f07b1
Author: mateenmansoori <ma...@gmail.com>
AuthorDate: Wed Aug 4 11:46:48 2021 +0530

    RANNGER-3355 : Update the current logging mechanism to use custom log4j conf
    
    Signed-off-by: Mehul Parikh <me...@apache.org>
---
 embeddedwebserver/scripts/ranger-admin-services.sh |  8 +++-
 security-admin/scripts/db_setup.py                 | 43 +++++++++++++++++++---
 security-admin/scripts/install.properties          |  1 +
 security-admin/scripts/setup.sh                    |  8 ++++
 .../src/main/webapp/WEB-INF/log4j.properties       | 16 ++++++++
 5 files changed, 69 insertions(+), 7 deletions(-)

diff --git a/embeddedwebserver/scripts/ranger-admin-services.sh b/embeddedwebserver/scripts/ranger-admin-services.sh
index 0bc06e1..d7cabbc 100755
--- a/embeddedwebserver/scripts/ranger-admin-services.sh
+++ b/embeddedwebserver/scripts/ranger-admin-services.sh
@@ -57,10 +57,16 @@ then
 	RANGER_ADMIN_LOG_DIR=${XAPOLICYMGR_EWS_DIR}/logs
 fi
 
+if [ -z "${RANGER_ADMIN_LOG4J_CONF_FILE}" ]
+then
+	RANGER_ADMIN_LOG4J_CONF_FILE=${XAPOLICYMGR_EWS_DIR}/webapp/WEB-INF/log4j.properties
+fi
+
 if [ -z "${RANGER_PID_DIR_PATH}" ]
 then
         RANGER_PID_DIR_PATH=/var/run/ranger
 fi
+
 if [ -z "${RANGER_ADMIN_PID_NAME}" ]
 then
         RANGER_ADMIN_PID_NAME=rangeradmin.pid
@@ -85,7 +91,7 @@ fi
 SERVER_NAME=rangeradmin
 start() {
 	SLEEP_TIME_AFTER_START=5
-	nohup  java -Dproc_rangeradmin ${JAVA_OPTS} -Dlog4j.configuration=file:${XAPOLICYMGR_EWS_DIR}/webapp/WEB-INF/log4j.properties  -Duser=${USER} -Dhostname=${HOSTNAME} ${DB_SSL_PARAM} -Dservername=${SERVER_NAME} -Dlogdir=${RANGER_ADMIN_LOG_DIR} -Dcatalina.base=${XAPOLICYMGR_EWS_DIR} -cp "${XAPOLICYMGR_EWS_DIR}/webapp/WEB-INF/classes/conf:${XAPOLICYMGR_EWS_DIR}/lib/*:${RANGER_JAAS_LIB_DIR}/*:${RANGER_JAAS_CONF_DIR}:${JAVA_HOME}/lib/*:${RANGER_HADOOP_CONF_DIR}/*:$CLASSPATH" org.apache.ranger [...]
+	nohup  java -Dproc_rangeradmin ${JAVA_OPTS} -Dlog4j.configuration=file:${RANGER_ADMIN_LOG4J_CONF_FILE}  -Duser=${USER} -Dhostname=${HOSTNAME} ${DB_SSL_PARAM} -Dservername=${SERVER_NAME} -Dlogdir=${RANGER_ADMIN_LOG_DIR} -Dcatalina.base=${XAPOLICYMGR_EWS_DIR} -cp "${XAPOLICYMGR_EWS_DIR}/webapp/WEB-INF/classes/conf:${XAPOLICYMGR_EWS_DIR}/lib/*:${RANGER_JAAS_LIB_DIR}/*:${RANGER_JAAS_CONF_DIR}:${JAVA_HOME}/lib/*:${RANGER_HADOOP_CONF_DIR}/*:$CLASSPATH" org.apache.ranger.server.tomcat.Embedded [...]
 	VALUE_OF_PID=$!
 	echo "Starting Apache Ranger Admin Service"
 	sleep $SLEEP_TIME_AFTER_START
diff --git a/security-admin/scripts/db_setup.py b/security-admin/scripts/db_setup.py
index 4dcf6c9..29f0743 100644
--- a/security-admin/scripts/db_setup.py
+++ b/security-admin/scripts/db_setup.py
@@ -23,10 +23,12 @@ from os.path import basename
 import time
 import socket
 import glob
+import getpass
 globalDict = {}
 
 os_name = platform.system()
 os_name = os_name.upper()
+os_user = getpass.getuser()
 ranger_version=''
 jisql_debug=True
 retryPatchAfterSeconds=120
@@ -435,8 +437,17 @@ class BaseDB(object):
 		version = ""
 		className = ""
 		app_home = os.path.join(RANGER_ADMIN_HOME,"ews","webapp")
-		ranger_log = os.path.join(RANGER_ADMIN_HOME,"ews","logs")
+		ranger_log_dir = globalDict['RANGER_ADMIN_LOG_DIR']
+		if ranger_log_dir == "$PWD":
+			ranger_log_dir = os.path.join(RANGER_ADMIN_HOME,"ews","logs")
 		javaFiles = os.path.join(app_home,"WEB-INF","classes","org","apache","ranger","patch")
+		log4j_conf_file = globalDict['RANGER_ADMIN_LOG4J_CONF_FILE']
+		if not log4j_conf_file:
+			log4j_conf_file = "file:" + os.path.join(app_home, "WEB-INF", "log4j.properties")
+		else:
+			log4j_conf_file = "file:" + log4j_conf_file
+		log("[I] RANGER ADMIN LOG DIR : " + ranger_log_dir, "info")
+		log("[I] LOG4J CONF FILE : " + log4j_conf_file, "info")
 		if not os.path.exists(javaFiles):
 			log("[I] No java patches to apply!","info")
 		else:
@@ -504,7 +515,7 @@ class BaseDB(object):
 								path = os.path.join("%s","WEB-INF","classes","conf:%s","WEB-INF","classes","lib","*:%s","WEB-INF",":%s","META-INF",":%s","WEB-INF","lib","*:%s","WEB-INF","classes",":%s","WEB-INF","classes","META-INF:%s" )%(app_home ,app_home ,app_home, app_home, app_home, app_home ,app_home ,self.SQL_CONNECTOR_JAR)
 							elif os_name == "WINDOWS":
 								path = os.path.join("%s","WEB-INF","classes","conf;%s","WEB-INF","classes","lib","*;%s","WEB-INF",";%s","META-INF",";%s","WEB-INF","lib","*;%s","WEB-INF","classes",";%s","WEB-INF","classes","META-INF;%s" )%(app_home ,app_home ,app_home, app_home, app_home, app_home ,app_home ,self.SQL_CONNECTOR_JAR)
-							get_java_cmd = "%s -XX:MetaspaceSize=100m -XX:MaxMetaspaceSize=200m -Xmx%s -Xms1g -Dlogdir=%s -Dlog4j.configuration=db_patch.log4j.xml -cp %s org.apache.ranger.patch.%s"%(self.JAVA_BIN,globalDict['ranger_admin_max_heap_size'],ranger_log,path,className)
+							get_java_cmd = "%s -XX:MetaspaceSize=100m -XX:MaxMetaspaceSize=200m -Xmx%s -Xms1g -Dlogdir=%s -Dlog4j.configuration=%s -Duser=%s -Dhostname=%s -cp %s org.apache.ranger.patch.%s"%(self.JAVA_BIN,globalDict['ranger_admin_max_heap_size'],ranger_log_dir,log4j_conf_file,os_user,client_host,path,className)
 							if is_unix:
 								ret = subprocess.call(shlex.split(get_java_cmd))
 							elif os_name == "WINDOWS":
@@ -528,8 +539,18 @@ class BaseDB(object):
 		className = "ChangePasswordUtil"
 		version = dbversionBasedOnUserName(userName)
 		app_home = os.path.join(RANGER_ADMIN_HOME,"ews","webapp")
-		ranger_log = os.path.join(RANGER_ADMIN_HOME,"ews","logs")
+		ranger_log_dir = globalDict['RANGER_ADMIN_LOG_DIR']
+		if ranger_log_dir == "$PWD":
+			ranger_log_dir = os.path.join(RANGER_ADMIN_HOME,"ews","logs")
 		filePath = os.path.join(app_home,"WEB-INF","classes","org","apache","ranger","patch","cliutil","ChangePasswordUtil.class")
+		log4j_conf_file = globalDict['RANGER_ADMIN_LOG4J_CONF_FILE']
+		if not log4j_conf_file:
+			log4j_conf_file = "file:" + os.path.join(app_home, "WEB-INF", "log4j.properties")
+		else:
+			log4j_conf_file = "file:" + log4j_conf_file
+
+		log("[I] RANGER ADMIN LOG DIR : " + ranger_log_dir, "info")
+		log("[I] LOG4J CONF FILE : " + log4j_conf_file, "info")
 		if os.path.exists(filePath):
 			if version != "":
 				output = self.execute_query(self.get_version_query(version,'Y'))
@@ -585,7 +606,7 @@ class BaseDB(object):
 							path = os.path.join("%s","WEB-INF","classes","conf:%s","WEB-INF","classes","lib","*:%s","WEB-INF",":%s","META-INF",":%s","WEB-INF","lib","*:%s","WEB-INF","classes",":%s","WEB-INF","classes","META-INF:%s" )%(app_home ,app_home ,app_home, app_home, app_home, app_home ,app_home ,self.SQL_CONNECTOR_JAR)
 						elif os_name == "WINDOWS":
 							path = os.path.join("%s","WEB-INF","classes","conf;%s","WEB-INF","classes","lib","*;%s","WEB-INF",";%s","META-INF",";%s","WEB-INF","lib","*;%s","WEB-INF","classes",";%s","WEB-INF","classes","META-INF;%s" )%(app_home ,app_home ,app_home, app_home, app_home, app_home ,app_home ,self.SQL_CONNECTOR_JAR)
-						get_java_cmd = "%s -Dlogdir=%s -Dlog4j.configuration=db_patch.log4j.xml -cp %s org.apache.ranger.patch.cliutil.%s %s %s %s -default"%(self.JAVA_BIN,ranger_log,path,className,'"'+userName+'"','"'+oldPassword+'"','"'+newPassword+'"')
+						get_java_cmd = "%s -Dlogdir=%s -Dlog4j.configuration=%s -Duser=%s -Dhostname=%s -cp %s org.apache.ranger.patch.cliutil.%s %s %s %s -default"%(self.JAVA_BIN,ranger_log_dir,log4j_conf_file,os_user,client_host,path,className,'"'+userName+'"','"'+oldPassword+'"','"'+newPassword+'"')
 						if is_unix:
 							status = subprocess.call(shlex.split(get_java_cmd))
 						elif os_name == "WINDOWS":
@@ -616,8 +637,18 @@ class BaseDB(object):
 		className = "ChangePasswordUtil"
 		version = "DEFAULT_ALL_ADMIN_UPDATE"
 		app_home = os.path.join(RANGER_ADMIN_HOME,"ews","webapp")
-		ranger_log = os.path.join(RANGER_ADMIN_HOME,"ews","logs")
+		ranger_log_dir = globalDict['RANGER_ADMIN_LOG_DIR']
+		if ranger_log_dir == "$PWD":
+			ranger_log_dir = os.path.join(RANGER_ADMIN_HOME,"ews","logs")
 		filePath = os.path.join(app_home,"WEB-INF","classes","org","apache","ranger","patch","cliutil","ChangePasswordUtil.class")
+		log4j_conf_file = globalDict['RANGER_ADMIN_LOG4J_CONF_FILE']
+		if not log4j_conf_file:
+			log4j_conf_file = "file:" + os.path.join(app_home, "WEB-INF", "log4j.properties")
+		else:
+			log4j_conf_file = "file:" + log4j_conf_file
+
+		log("[I] RANGER ADMIN LOG DIR : " + ranger_log_dir, "info")
+		log("[I] LOG4J CONF FILE : " + log4j_conf_file, "info")
 		if os.path.exists(filePath):
 			if version != "":
 				output = self.execute_query(self.get_version_query(version,'Y'))
@@ -673,7 +704,7 @@ class BaseDB(object):
 							path = os.path.join("%s","WEB-INF","classes","conf:%s","WEB-INF","classes","lib","*:%s","WEB-INF",":%s","META-INF",":%s","WEB-INF","lib","*:%s","WEB-INF","classes",":%s","WEB-INF","classes","META-INF:%s" )%(app_home ,app_home ,app_home, app_home, app_home, app_home ,app_home ,self.SQL_CONNECTOR_JAR)
 						elif os_name == "WINDOWS":
 							path = os.path.join("%s","WEB-INF","classes","conf;%s","WEB-INF","classes","lib","*;%s","WEB-INF",";%s","META-INF",";%s","WEB-INF","lib","*;%s","WEB-INF","classes",";%s","WEB-INF","classes","META-INF;%s" )%(app_home ,app_home ,app_home, app_home, app_home, app_home ,app_home ,self.SQL_CONNECTOR_JAR)
-						get_java_cmd = "%s -Dlogdir=%s -Dlog4j.configuration=db_patch.log4j.xml -cp %s org.apache.ranger.patch.cliutil.%s %s -default"%(self.JAVA_BIN,ranger_log,path,className, userPwdString)
+						get_java_cmd = "%s -Dlogdir=%s -Dlog4j.configuration=%s -Duser=%s -Dhostname=%s -cp %s org.apache.ranger.patch.cliutil.%s %s -default"%(self.JAVA_BIN,ranger_log_dir,log4j_conf_file,os_user,client_host,path,className, userPwdString)
 						if is_unix:
 							status = subprocess.call(shlex.split(get_java_cmd))
 						elif os_name == "WINDOWS":
diff --git a/security-admin/scripts/install.properties b/security-admin/scripts/install.properties
index 6cde15d..ae7a00d 100644
--- a/security-admin/scripts/install.properties
+++ b/security-admin/scripts/install.properties
@@ -232,6 +232,7 @@ sso_publickey=
 
 # Custom log directory path
 RANGER_ADMIN_LOG_DIR=$PWD
+RANGER_ADMIN_LOG4J_CONF_FILE=
 
 # PID file path
 RANGER_PID_DIR_PATH=/var/run/ranger
diff --git a/security-admin/scripts/setup.sh b/security-admin/scripts/setup.sh
index df8d64f..f6f6f56 100755
--- a/security-admin/scripts/setup.sh
+++ b/security-admin/scripts/setup.sh
@@ -141,6 +141,7 @@ sso_enabled=$(get_prop 'sso_enabled' $PROPFILE)
 sso_providerurl=$(get_prop 'sso_providerurl' $PROPFILE)
 sso_publickey=$(get_prop 'sso_publickey' $PROPFILE)
 RANGER_ADMIN_LOG_DIR=$(eval echo "$(get_prop 'RANGER_ADMIN_LOG_DIR' $PROPFILE)")
+RANGER_ADMIN_LOG4J_CONF_FILE=$(eval echo "$(get_prop 'RANGER_ADMIN_LOG4J_CONF_FILE' $PROPFILE)")
 RANGER_PID_DIR_PATH=$(eval echo "$(get_prop 'RANGER_PID_DIR_PATH' $PROPFILE)")
 
 spnego_principal=$(get_prop 'spnego_principal' $PROPFILE)
@@ -1482,6 +1483,13 @@ setup_install_files(){
 		fi
 	fi
 
+	if [ -z "${RANGER_ADMIN_LOG4J_CONF_FILE}" ]; then
+		RANGER_ADMIN_LOG4J_CONF_FILE=${WEBAPP_ROOT}/WEB-INF/log4j.properties
+	fi
+	echo "export RANGER_ADMIN_LOG4J_CONF_FILE=${RANGER_ADMIN_LOG4J_CONF_FILE}" > ${WEBAPP_ROOT}/WEB-INF/classes/conf/ranger-admin-env-log4j-conf-file.sh
+	chmod a+rx ${WEBAPP_ROOT}/WEB-INF/classes/conf/ranger-admin-env-log4j-conf-file.sh
+	log "[I] RANGER ADMIN LOG4J CONF FILE : ${RANGER_ADMIN_LOG4J_CONF_FILE}"
+
 	if [ -z "${RANGER_ADMIN_LOG_DIR}" ] || [ ${RANGER_ADMIN_LOG_DIR} == ${XAPOLICYMGR_DIR} ]; then 
                 RANGER_ADMIN_LOG_DIR=${XAPOLICYMGR_DIR}/ews/logs;
         fi
diff --git a/security-admin/src/main/webapp/WEB-INF/log4j.properties b/security-admin/src/main/webapp/WEB-INF/log4j.properties
index b47554c..fce5143 100644
--- a/security-admin/src/main/webapp/WEB-INF/log4j.properties
+++ b/security-admin/src/main/webapp/WEB-INF/log4j.properties
@@ -45,6 +45,22 @@ log4j.appender.perf_appender.append=true
 log4j.appender.perf_appender.layout=org.apache.log4j.PatternLayout
 log4j.appender.perf_appender.layout.ConversionPattern=%d [%t] %m%n
 
+log4j.category.org.apache.ranger.perf=DEBUG, perf_appender
+
+# patch_logger
+log4j.appender.patch_logger=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.patch_logger.file=${logdir}/ranger_db_patch.log
+log4j.appender.patch_logger.datePattern='.'yyyy-MM-dd
+log4j.appender.patch_logger.append=true
+log4j.appender.patch_logger.layout=org.apache.log4j.PatternLayout
+log4j.appender.patch_logger.layout.ConversionPattern=%d [%t] %-5p %C{6} (%F:%L) - %m%n
+# patch_logger : category and additivity
+log4j.category.org.springframework=warn,patch_logger
+log4j.additivity.org.springframework=false
+
+log4j.category.org.apache.ranger.patch=info,patch_logger
+log4j.additivity.org.apache.ranger.patch=false
+
 
 # sql_appender
 log4j.appender.sql_appender=org.apache.log4j.DailyRollingFileAppender