diff --git a/CHANGES_NEXT_RELEASE b/CHANGES_NEXT_RELEASE index e3c69315d..e26fdd8d8 100644 --- a/CHANGES_NEXT_RELEASE +++ b/CHANGES_NEXT_RELEASE @@ -1,6 +1,8 @@ -[cygnus-ngsi] Update NameMapping compile log mensage from WARN to ERROR -[cygnus-common] MongoDB indexes are created depending on DM (#2204) -[cygnus-common] Upgrade postgresql from 42.4.1 to 42.4.3 -[cygnus-common] OracleSQL backend (#2195) -[cygnus-ngsi] OracleSQL ngsi sink added (for OracleS 11g and 12c) (#2195) -[cygnus-ngsi] Removes "_" in schema name for DM -schema family (#2201) +[cygnus-ngsi] Update NameMapping compile log mensage from WARN to ERROR +[cygnus-common] MongoDB indexes are created depending on DM (#2204) +[cygnus-common] Upgrade postgresql from 42.4.1 to 42.4.3 +[cygnus-common] OracleSQL backend (#2195) +[cygnus-common][cygnus-twitter] Upgrade flume-ng-node version from 1.9.0 to 1.11.0 (#2179) +[cygnus-common][cygnus-twitter][cygnus-ngsi][cygnus-ngsi-ld] Upgrade log4j from v1 (1.2.17) to v2 (2.17.2) series (#1592) +[cygnus-ngsi] OracleSQL ngsi sink added (for OracleS 11g and 12c) (#2195) +[cygnus-ngsi] Removes "_" in schema name for DM -schema family (#2201) diff --git a/cygnus-common/conf/log4j.properties.template b/cygnus-common/conf/log4j.properties.template deleted file mode 100644 index 690a7d310..000000000 --- a/cygnus-common/conf/log4j.properties.template +++ /dev/null @@ -1,71 +0,0 @@ -# -# Copyright 2014-2017 Telefónica Investigación y Desarrollo, S.A.U -# -# This file is part of fiware-cygnus (FIWARE project). -# -# fiware-cygnus is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General -# Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any -# later version. -# fiware-cygnus is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more -# details. -# -# You should have received a copy of the GNU Affero General Public License along with fiware-cygnus. If not, see -# http://www.gnu.org/licenses/. -# -# For those usages not covered by the GNU Affero General Public License please contact with iot_support at tid dot es -# - -# To be put in APACHE_FLUME_HOME/conf/log4j.properties - -# Define some default values. -# These can be overridden by system properties, e.g. the following logs in the standard output, which is very useful -# for testing purposes (-Dflume.root.logger=DEBUG,console) -flume.root.logger=INFO,LOGFILE -#flume.root.logger=DEBUG,console -flume.log.dir=/var/log/cygnus/ -flume.log.file=cygnus.log - -# Logging level for third party components. -log4j.logger.org.apache.flume.lifecycle = WARN -log4j.logger.org.jboss = WARN -log4j.logger.org.mortbay = WARN -log4j.logger.org.apache.avro.ipc.NettyTransceiver = WARN -log4j.logger.org.apache.hadoop = WARN -log4j.logger.org.mongodb = WARN -log4j.logger.org.apache.http = WARN -log4j.logger.org.apache.zookeeper = WARN -log4j.logger.org.apache.kafka = WARN -log4j.logger.org.I0Itec = WARN -log4j.logger.com.amazonaws = WARN - -# Define the root logger to the system property "flume.root.logger". -log4j.rootLogger=${flume.root.logger} - -# Stock log4j rolling file appender. -# Default log rotation configuration. -log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender -log4j.appender.LOGFILE.MaxFileSize=100MB -log4j.appender.LOGFILE.MaxBackupIndex=10 -log4j.appender.LOGFILE.File=${flume.log.dir}/${flume.log.file} -log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout -log4j.appender.LOGFILE.layout.ConversionPattern=time=%d{yyyy-MM-dd}T%d{HH:mm:ss.SSS}Z | lvl=%p | corr=%X{correlatorId} | trans=%X{transactionId} | srv=%X{service} | subsrv=%X{subservice} | comp=%X{agent} | op=%M | msg=%C[%L] : %m%n - -# Warning: If you enable the following appender it will fill up your disk if you don't have a cleanup job! -# cleanup job example: find /var/log/cygnus -type f -mtime +30 -exec rm -f {} \; -# This uses the updated rolling file appender from log4j-extras that supports a reliable time-based rolling policy. -# See http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html -# Add "DAILY" to flume.root.logger above if you want to use this. -log4j.appender.DAILY=org.apache.log4j.rolling.RollingFileAppender -log4j.appender.DAILY.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy -log4j.appender.DAILY.rollingPolicy.ActiveFileName=${flume.log.dir}/${flume.log.file} -log4j.appender.DAILY.rollingPolicy.FileNamePattern=${flume.log.dir}/${flume.log.file}.%d{yyyy-MM-dd} -log4j.appender.DAILY.layout=org.apache.log4j.PatternLayout -log4j.appender.DAILY.layout.ConversionPattern=time=%d{yyyy-MM-dd}T%d{HH:mm:ss.SSS}Z | lvl=%p | corr=%X{correlatorId} | trans=%X{transactionId} | srv=%X{service} | subsrv=%X{subservice} | comp=%X{agent} | op=%M | msg=%C[%L] : %m%n - -# Console appender, i.e. printing logs in the standar output. -# Add "console" to flume.root.logger above if you want to use this. -log4j.appender.console=org.apache.log4j.ConsoleAppender -log4j.appender.console.target=System.err -log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern=time=%d{yyyy-MM-dd}T%d{HH:mm:ss.SSS}Z | lvl=%p | corr=%X{correlatorId} | trans=%X{transactionId} | srv=%X{service} | subsrv=%X{subservice} | comp=%X{agent} | op=%M | msg=%C[%L] : %m%n diff --git a/cygnus-common/conf/log4j2.properties.template b/cygnus-common/conf/log4j2.properties.template new file mode 100644 index 000000000..d45daf4e3 --- /dev/null +++ b/cygnus-common/conf/log4j2.properties.template @@ -0,0 +1,57 @@ +# +# Copyright 2014-2017 Telefónica Investigación y Desarrollo, S.A.U +# +# This file is part of fiware-cygnus (FIWARE project). +# +# fiware-cygnus is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General +# Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any +# later version. +# fiware-cygnus is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more +# details. +# +# You should have received a copy of the GNU Affero General Public License along with fiware-cygnus. If not, see +# http://www.gnu.org/licenses/. +# +# For those usages not covered by the GNU Affero General Public License please contact with iot_support at tid dot es +# + +# To be put in APACHE_FLUME_HOME/conf/log4j2.properties +# Define some default values. +# These can be overridden by system properties, e.g. the following logs in the standard output, which is very useful +# for testing purposes (-Dflume.root.logger=DEBUG,console) +flume.root.logger=WARN,LOGFILE +#flume.root.logger=DEBUG,console +flume.log.dir=/var/log/cygnus/ +flume.log.file=cygnus.log + +# Logging level for third party components. +log4j.logger.org.apache.flume.lifecycle = WARN +log4j.logger.org.jboss = WARN +log4j.logger.org.mortbay = WARN +log4j.logger.org.apache.avro.ipc.NettyTransceiver = WARN +log4j.logger.org.apache.hadoop = WARN +log4j.logger.org.mongodb = WARN +log4j.logger.org.apache.http = WARN +log4j.logger.org.apache.zookeeper = WARN +log4j.logger.org.apache.kafka = WARN +log4j.logger.org.I0Itec = WARN +log4j.logger.com.amazonaws = WARN +log4j.logger.org.eclipse.jetty = WARN + +# Extra logging related to initialization of Log4j +# Set to debug or trace if log4j initialization is failing +status = warn +# Name of the configuration +name = ConsoleLogConfig + +# Console appender configuration +appender.console.type = Console +appender.console.name = consoleLogger +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = time=%d{yyyy-MM-dd}T%d{HH:mm:ss.SSS}Z | lvl=%p | corr=%X{correlatorId} | trans=%X{transactionId} | srv=%X{service} | subsrv=%X{subservice} | comp=%X{agent} | op=%M | msg=%C[%L] : %m%n + +# Root logger level +rootLogger.level = warn +# Root logger referring to console appender +rootLogger.appenderRef.stdout.ref = consoleLogger diff --git a/cygnus-common/pom.xml b/cygnus-common/pom.xml index adef52176..02101fc14 100644 --- a/cygnus-common/pom.xml +++ b/cygnus-common/pom.xml @@ -15,6 +15,13 @@ UTF-8 + + + mvnrepository + https://repo1.maven.org/maven2 + + + @@ -33,7 +40,7 @@ org.apache.flume flume-ng-node - 1.9.0 + 1.11.0 @@ -87,9 +94,19 @@ - log4j - log4j - 1.2.17 + org.apache.logging.log4j + log4j-core + 2.17.2 + + + org.apache.logging.log4j + log4j-api + 2.17.2 + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.17.2 diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/arcgis/model/Feature.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/arcgis/model/Feature.java index f4bd0c650..217bcc6aa 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/arcgis/model/Feature.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/arcgis/model/Feature.java @@ -27,8 +27,6 @@ import java.util.Map.Entry; import java.util.Set; -import org.apache.log4j.Logger; - import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/arcgis/model/Point.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/arcgis/model/Point.java index b4aca62c5..8dab058f8 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/arcgis/model/Point.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/arcgis/model/Point.java @@ -18,8 +18,6 @@ package com.telefonica.iot.cygnus.backends.arcgis.model; -import org.apache.log4j.Logger; - import com.google.gson.JsonObject; import com.telefonica.iot.cygnus.backends.arcgis.exceptions.ArcgisException; import com.telefonica.iot.cygnus.log.CygnusLogger; diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/http/HttpBackend.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/http/HttpBackend.java index c4ac83a0b..a00a3caf4 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/http/HttpBackend.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/backends/http/HttpBackend.java @@ -42,7 +42,8 @@ import org.apache.http.client.methods.HttpPut; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.entity.StringEntity; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; @@ -258,7 +259,7 @@ private class PrivilegedRequest implements PrivilegedAction { * @param entity */ PrivilegedRequest(String method, String url, ArrayList
headers, StringEntity entity) { - this.logger = Logger.getLogger(PrivilegedRequest.class); + this.logger = LogManager.getLogger(PrivilegedRequest.class); this.method = method; this.url = url; this.headers = headers; diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/log/CygnusLogger.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/log/CygnusLogger.java index 2df31d79f..13eda6087 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/log/CygnusLogger.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/log/CygnusLogger.java @@ -17,8 +17,10 @@ */ package com.telefonica.iot.cygnus.log; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.spi.ExtendedLogger; /** * Wrapper class for log4j Logger class. Reference: @@ -30,14 +32,22 @@ public class CygnusLogger { private static String fqcn = CygnusLogger.class.getName(); - private Logger logger; + private final ExtendedLogger logger; + + /** + * Constructor. + * @param logger + */ + private CygnusLogger(final Logger logger) { + this.logger = (ExtendedLogger) logger; + } /** * Constructor. * @param name */ public CygnusLogger(String name) { - this.logger = Logger.getLogger(name); + this(LogManager.getLogger(name)); } // CygnusLogger /** @@ -54,7 +64,7 @@ public CygnusLogger(Class clazz) { */ public void fatal(Object msg) { try { - logger.log(fqcn, Level.FATAL, msg, null); + this.logger.logIfEnabled(fqcn, Level.FATAL, null, msg.toString()); } catch (Exception e) { traceAndExit(e); } // try catch @@ -66,7 +76,7 @@ public void fatal(Object msg) { */ public void error(Object msg) { try { - logger.log(fqcn, Level.ERROR, msg, null); + this.logger.logIfEnabled(fqcn, Level.ERROR, null, msg.toString()); } catch (Exception e) { traceAndExit(e); } // try catch @@ -78,7 +88,7 @@ public void error(Object msg) { */ public void debug(Object msg) { try { - logger.log(fqcn, Level.DEBUG, msg, null); + this.logger.logIfEnabled(fqcn, Level.DEBUG, null, msg.toString()); } catch (Exception e) { traceAndExit(e); } // try catch @@ -90,7 +100,7 @@ public void debug(Object msg) { */ public void info(Object msg) { try { - logger.log(fqcn, Level.INFO, msg, null); + this.logger.logIfEnabled(fqcn, Level.INFO, null, msg.toString()); } catch (Exception e) { traceAndExit(e); } // try catch @@ -102,7 +112,7 @@ public void info(Object msg) { */ public void warn(Object msg) { try { - logger.log(fqcn, Level.WARN, msg, null); + this.logger.logIfEnabled(fqcn, Level.WARN, null, msg.toString()); } catch (Exception e) { traceAndExit(e); } // try catch @@ -115,7 +125,7 @@ public void warn(Object msg) { */ public void trace(Object msg) { try { - logger.log(fqcn, Level.TRACE, msg, null); + this.logger.logIfEnabled(fqcn, Level.TRACE, null, msg.toString()); } catch (Exception e) { traceAndExit(e); } // try catch diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/GUIHandlers.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/GUIHandlers.java index c958de08f..980c8ff94 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/GUIHandlers.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/GUIHandlers.java @@ -17,7 +17,7 @@ */ package com.telefonica.iot.cygnus.management; -import com.google.common.collect.ImmutableMap; +import java.util.Map; import com.telefonica.iot.cygnus.channels.CygnusChannel; import java.io.BufferedReader; import java.io.FileReader; @@ -69,7 +69,7 @@ public static void getRoot(HttpServletResponse response) throws IOException { * @param channels * @throws IOException */ - public static void getPoints(HttpServletResponse response, ImmutableMap channels) + public static void getPoints(HttpServletResponse response, Map channels) throws IOException { // add a new source row String sourceColumns = ""; diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/LogHandlers.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/LogHandlers.java index b88bd4a89..bd229abec 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/LogHandlers.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/LogHandlers.java @@ -28,14 +28,21 @@ import java.util.ArrayList; import java.util.Enumeration; import java.util.Map; +import java.util.Iterator; import java.util.Properties; +import java.util.Collections; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.log4j.Appender; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; -import org.apache.log4j.PatternLayout; +import org.apache.logging.log4j.core.Appender; +import org.apache.logging.log4j.core.appender.ConsoleAppender; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.layout.PatternLayout; +import org.apache.logging.log4j.core.layout.PatternLayout.Builder; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.LoggerConfig; +import org.apache.logging.log4j.core.config.Configuration; /** * @@ -69,13 +76,15 @@ public static void getLoggers(HttpServletRequest request, HttpServletResponse re if ((transientVar == null) || (transientVar.equals("true"))) { String loggersJson = "["; boolean firstTime = true; - Enumeration loggers = LogManager.getLoggerRepository().getCurrentLoggers(); + LoggerContext logContext = (LoggerContext) LogManager.getContext(false); + Map loggers = logContext.getConfiguration().getLoggers(); if (allLoggers) { - while (loggers.hasMoreElements()) { - - Logger logger = loggers.nextElement(); - String loggName = logger.getName(); + Iterator> iterator = loggers.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + String loggName = entry.getKey().toString(); + Logger logger = LogManager.getLogger(loggName); Level level = logger.getLevel(); if (!firstTime) { @@ -97,9 +106,11 @@ public static void getLoggers(HttpServletRequest request, HttpServletResponse re } else { boolean loggerFound = false; - while (loggers.hasMoreElements()) { - - Logger log = loggers.nextElement(); + Iterator> iterator = loggers.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + String loggName = entry.getKey().toString(); + Logger log = LogManager.getLogger(loggName); if (log.getName().equals(loggerName)) { loggersJson += "{\"name\":\"" + log.getName() + "\"}"; loggerFound = true; @@ -110,7 +121,7 @@ public static void getLoggers(HttpServletRequest request, HttpServletResponse re loggersJson += "]"; if (loggerFound) { - LogManager.getLoggerRepository().getLogger(loggerName); + LogManager.getLogger(loggerName); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("{\"success\":\"true\",\"logger\":" + loggersJson + "}"); LOGGER.debug("Log4j logger successfully obtained"); @@ -282,7 +293,27 @@ public static void postLoggers(HttpServletRequest request, HttpServletResponse r LOGGER.debug("Missing input JSON"); } // if else } // postLoggers - + + public static void setLevel(Logger logger, Level level) { + final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + final Configuration config = ctx.getConfiguration(); + + LoggerConfig loggerConfig = config.getLoggerConfig(logger.getName()); + LoggerConfig specificConfig = loggerConfig; + + // We need a specific configuration for this logger, + // otherwise we would change the level of all other loggers + // having the original configuration as parent as well + + if (!loggerConfig.getName().equals(logger.getName())) { + specificConfig = new LoggerConfig(logger.getName(), level, true); + specificConfig.setParent(loggerConfig); + config.addLogger(logger.getName(), specificConfig); + } + specificConfig.setLevel(level); + ctx.updateLoggers(); + } + public static void putLoggers(HttpServletRequest request, HttpServletResponse response, String configurationPath) throws IOException { response.setContentType("application/json; charset=utf-8"); @@ -314,12 +345,15 @@ public static void putLoggers(HttpServletRequest request, HttpServletResponse re File file = new File(pathToFile); if ((isTransient == null) || (isTransient.equals("true"))) { - Enumeration currentLoggers = LogManager.getLoggerRepository().getCurrentLoggers(); + LoggerContext logContext = (LoggerContext) LogManager.getContext(false); + Map loggers = logContext.getConfiguration().getLoggers(); boolean loggerFound = false; - while (currentLoggers.hasMoreElements()) { - Logger currentLogger = currentLoggers.nextElement(); - String loggerName = currentLogger.getName(); + Iterator> iterator = loggers.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + String loggerName = entry.getKey().toString(); + Logger currentLogger = LogManager.getLogger(loggerName); if (loggerName.equals(name)) { loggerFound = true; @@ -327,8 +361,9 @@ public static void putLoggers(HttpServletRequest request, HttpServletResponse re } // while if (loggerFound) { - Logger loggerUpdated = LogManager.getLoggerRepository().getLogger(name); - loggerUpdated.setLevel(Level.toLevel(level)); + Logger loggerUpdated = LogManager.getLogger(name); + + setLevel(loggerUpdated, Level.toLevel(level)); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("{\"success\":\"true\"," + "\"result\":\"Logger '" + name + "' updated succesfully\"}"); @@ -417,14 +452,14 @@ public static void deleteLoggers(HttpServletRequest request, HttpServletResponse File file = new File(pathToFile); if ((isTransient == null) || (isTransient.equals("true"))) { - Enumeration loggers = LogManager.getLoggerRepository().getCurrentLoggers(); + LoggerContext logContext = (LoggerContext) LogManager.getContext(false); + Map loggers = logContext.getConfiguration().getLoggers(); if (allLoggers) { - - while (loggers.hasMoreElements()) { - loggers.nextElement().setLevel(Level.OFF); - } // while - + loggers.forEach((loggName, config) -> { + setLevel(LogManager.getLogger(loggName), Level.OFF); + }); // while + response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("{\"success\":\"true\",\"result\":\"Loggers removed succesfully\"}"); LOGGER.debug("Log4j loggers removed succesfully"); @@ -433,12 +468,12 @@ public static void deleteLoggers(HttpServletRequest request, HttpServletResponse ArrayList loggerNames = new ArrayList<>(); - while (loggers.hasMoreElements()) { - loggerNames.add(loggers.nextElement()); - } // while + loggers.forEach((loggName, config) -> { + loggerNames.add(LogManager.getLogger(loggName)); + }); // while if (loggerNames.contains(LogManager.getLogger(loggerName))) { - LogManager.getLogger(loggerName).setLevel(Level.OFF); + setLevel(LogManager.getLogger(loggerName),Level.OFF); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("{\"success\":\"true\",\"result\":\"Logger '" + loggerName + "' removed succesfully\"}"); @@ -553,7 +588,9 @@ public static void getAppenders(HttpServletRequest request, HttpServletResponse String appendersJson; if (allAppenders) { - Enumeration appenders = LogManager.getRootLogger().getAllAppenders(); + LoggerContext logContext = (LoggerContext) LogManager.getContext(false); + Map appendersMap = logContext.getConfiguration().getAppenders(); + Enumeration appenders = Collections.enumeration(appendersMap.values()); appendersJson = ManagementInterfaceUtils.getStringAppender(appenders); if (appendersJson.equals("[]")) { @@ -569,7 +606,8 @@ public static void getAppenders(HttpServletRequest request, HttpServletResponse } else { try { - Appender app = LogManager.getRootLogger().getAppender(appenderName); + LoggerContext logContext = (LoggerContext) LogManager.getContext(false); + Appender app = logContext.getConfiguration().getAppender(appenderName); String name = app.getName(); PatternLayout layout = (PatternLayout) app.getLayout(); String layoutStr = layout.getConversionPattern(); @@ -804,7 +842,9 @@ public static void putAppenders(HttpServletRequest request, HttpServletResponse File file = new File(pathToFile); if ((isTransient == null) || (isTransient.equals("true"))) { - Enumeration currentAppenders = LogManager.getRootLogger().getAllAppenders(); + LoggerContext logContext = (LoggerContext) LogManager.getContext(false); + Map currentAppendersMap = logContext.getConfiguration().getAppenders(); + Enumeration currentAppenders = Collections.enumeration(currentAppendersMap.values()); boolean appenderFound = false; while (currentAppenders.hasMoreElements()) { @@ -816,11 +856,16 @@ public static void putAppenders(HttpServletRequest request, HttpServletResponse } // if } // while - PatternLayout patternLayout = new PatternLayout(pattern); + PatternLayout p = PatternLayout.createDefaultLayout(); + PatternLayout.Builder pb = p.newBuilder(); + PatternLayout patternLayout = pb.withPattern(pattern).build(); if (appenderFound) { - Appender appUpdated = LogManager.getRootLogger().getAppender(name); - appUpdated.setLayout(patternLayout); + ConsoleAppender newAppender = ConsoleAppender.createDefaultAppenderForLayout(patternLayout); + logContext.getConfiguration().addAppender(newAppender); + logContext.getRootLogger().addAppender(logContext.getConfiguration().getAppender(newAppender.getName())); + logContext.updateLoggers(); + response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("{\"success\":\"true\"," + "\"result\":\"Appender '" + name + "' updated succesfully\"}"); @@ -921,7 +966,13 @@ public static void deleteAppenders(HttpServletRequest request, HttpServletRespon if ((isTransient == null) || (isTransient.equals("true"))) { if (allAppenders) { - LogManager.getRootLogger().removeAllAppenders(); + LoggerContext logContext = (LoggerContext) LogManager.getContext(false); + Map appenders = logContext.getConfiguration().getAppenders(); + Configuration config = logContext.getConfiguration(); + appenders.forEach((name, appender) -> { + config.getRootLogger().removeAppender(name); + }); + logContext.updateLoggers(); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("{\"success\":\"true\",\"result\":\"Appenders removed succesfully\"}}"); LOGGER.debug("Log4j appenders removed succesfully"); @@ -929,8 +980,9 @@ public static void deleteAppenders(HttpServletRequest request, HttpServletRespon try { // Check if appender already exists - Appender delete = LogManager.getRootLogger().getAppender(appenderName); - LogManager.getRootLogger().removeAppender(delete); + LoggerContext logContext = (LoggerContext) LogManager.getContext(false); + Configuration config = logContext.getConfiguration(); + config.getRootLogger().removeAppender(appenderName); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("{\"success\":\"true\",\"result\":\"Appender '" + appenderName + "'removed succesfully\"}"); @@ -1043,18 +1095,12 @@ public static void putLogLevel(HttpServletRequest request, HttpServletResponse r try { CommonConstants.LoggingLevels.valueOf(logLevel.toUpperCase()); - // Change log level of rootLogger - LogManager.getRootLogger().setLevel(Level.toLevel(logLevel.toUpperCase())); - LOGGER.debug("log4j logging level of rootLogger updated to " + logLevel.toUpperCase()); - // Change log level of all possible loggers - Enumeration loggers = LogManager.getCurrentLoggers(); - while (loggers.hasMoreElements()) { - Logger currentLogger = (Logger) loggers.nextElement(); - if (currentLogger.getName().contains("com.telefonica.iot.cygnus")) { - LOGGER.debug("log4j logging level of logger " + currentLogger.getName() + " updated to " + logLevel.toUpperCase()); - LogManager.getLogger(currentLogger.getName()).setLevel(Level.toLevel(logLevel.toUpperCase())); - } - } + + + setLevel(LogManager.getRootLogger(), Level.toLevel(logLevel.toUpperCase())); + // Force WARN level to all org.apache.flume.lifecycle package + // due to high verbosity of DEBUG level of this package + setLevel(LogManager.getLogger("org.apache.flume.lifecycle"), Level.WARN); response.setStatus(HttpServletResponse.SC_OK); response.getWriter().println("{\"success\":\"log4j logging level updated to " + logLevel.toUpperCase() + "\" }"); diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/ManagementInterface.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/ManagementInterface.java index e671b9bed..eea05dd1a 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/ManagementInterface.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/ManagementInterface.java @@ -17,7 +17,7 @@ */ package com.telefonica.iot.cygnus.management; -import com.google.common.collect.ImmutableMap; +import java.util.Map; import com.telefonica.iot.cygnus.log.CygnusLogger; import com.telefonica.iot.cygnus.utils.CommonUtils; import java.io.BufferedReader; @@ -43,9 +43,9 @@ public class ManagementInterface extends AbstractHandler { private static final CygnusLogger LOGGER = new CygnusLogger(ManagementInterface.class); private final File configurationFile; private String nameMappingsConfFile; - private final ImmutableMap sources; - private final ImmutableMap channels; - private final ImmutableMap sinks; + private final Map sources; + private final Map channels; + private final Map sinks; private final int apiPort; private final int guiPort; private final String configurationPath; @@ -60,8 +60,8 @@ public class ManagementInterface extends AbstractHandler { * @param apiPort * @param guiPort */ - public ManagementInterface(String configurationPath, File configurationFile, ImmutableMap sources, ImmutableMap channels, ImmutableMap sinks, + public ManagementInterface(String configurationPath, File configurationFile, Map sources, Map channels, Map sinks, int apiPort, int guiPort) { this.configurationFile = configurationFile; diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/ManagementInterfaceUtils.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/ManagementInterfaceUtils.java index 8a731a217..f1df17125 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/ManagementInterfaceUtils.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/ManagementInterfaceUtils.java @@ -31,9 +31,9 @@ import java.util.Map; import java.util.Properties; import javax.servlet.http.HttpServletRequest; -import org.apache.log4j.Appender; -import org.apache.log4j.PatternLayout; -import org.slf4j.MDC; +import org.apache.logging.log4j.core.Appender; +import org.apache.logging.log4j.core.layout.PatternLayout; +import org.apache.logging.log4j.ThreadContext; import com.telefonica.iot.cygnus.utils.CommonUtils; import com.telefonica.iot.cygnus.utils.CommonConstants; @@ -59,8 +59,8 @@ public static String setCorrelator (HttpServletRequest request) { (request.getHeader(CommonConstants.HEADER_CORRELATOR_ID), transId); // set the given header to the response or create it - MDC.put(CommonConstants.LOG4J_CORR, corrId); - MDC.put(CommonConstants.LOG4J_TRANS, transId); + ThreadContext.put(CommonConstants.LOG4J_CORR, corrId); + ThreadContext.put(CommonConstants.LOG4J_TRANS, transId); return corrId; } // setCorrelator @@ -283,8 +283,8 @@ public static ArrayList getAppendersFromProperties (Properties propertie return appendersName; } // getAppendersFromProperties - - /** + + /** * getLoggersFromProperties: Returns an ArrayList with the loggers. * * @param properties @@ -321,7 +321,7 @@ public static ArrayList getLoggersFromProperties (Properties properties) return appendersName; } // getLoggersFromProperties - + /** * readLogDescriptions: Read the descriptions from a log4j file. * diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/MetricsHandlers.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/MetricsHandlers.java index 8f35d7f29..7bba395c5 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/MetricsHandlers.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/MetricsHandlers.java @@ -17,7 +17,7 @@ */ package com.telefonica.iot.cygnus.management; -import com.google.common.collect.ImmutableMap; +import java.util.Map; import com.telefonica.iot.cygnus.handlers.CygnusHandler; import com.telefonica.iot.cygnus.metrics.CygnusMetrics; import com.telefonica.iot.cygnus.log.CygnusLogger; @@ -57,7 +57,7 @@ private MetricsHandlers() { * @throws IOException */ public static synchronized void get(HttpServletRequest request, HttpServletResponse response, - ImmutableMap sources, ImmutableMap sinks) throws IOException { + Map sources, Map sinks) throws IOException { // Let's assume everything goes well response.setStatus(HttpServletResponse.SC_OK); @@ -89,8 +89,8 @@ public static synchronized void get(HttpServletRequest request, HttpServletRespo * @param sinks * @throws java.io.IOException */ - public static synchronized void delete(HttpServletResponse response, ImmutableMap sources, - ImmutableMap sinks) throws IOException { + public static synchronized void delete(HttpServletResponse response, Map sources, + Map sinks) throws IOException { deleteMetrics(sources, sinks); response.setStatus(HttpServletResponse.SC_OK); } // delete @@ -101,8 +101,8 @@ public static synchronized void delete(HttpServletResponse response, ImmutableMa * @param sinks * @return */ - protected static CygnusMetrics mergeMetrics(ImmutableMap sources, - ImmutableMap sinks) { + protected static CygnusMetrics mergeMetrics(Map sources, + Map sinks) { CygnusMetrics mergedMetrics = new CygnusMetrics(); if (sources != null) { @@ -162,8 +162,8 @@ protected static CygnusMetrics mergeMetrics(ImmutableMap s * @param sources * @param sinks */ - private static void deleteMetrics(ImmutableMap sources, - ImmutableMap sinks) { + private static void deleteMetrics(Map sources, + Map sinks) { if (sources != null) { for (String key : sources.keySet()) { Source source; diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/StatsHandlers.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/StatsHandlers.java index 1dc9cdf75..7e55e760e 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/StatsHandlers.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/management/StatsHandlers.java @@ -17,7 +17,7 @@ */ package com.telefonica.iot.cygnus.management; -import com.google.common.collect.ImmutableMap; +import java.util.Map; import com.telefonica.iot.cygnus.channels.CygnusChannel; import com.telefonica.iot.cygnus.handlers.CygnusHandler; import com.telefonica.iot.cygnus.log.CygnusLogger; @@ -56,8 +56,8 @@ private StatsHandlers() { * @param sinks * @throws IOException */ - public static void get(HttpServletResponse response, ImmutableMap sources, - ImmutableMap channels, ImmutableMap sinks) throws IOException { + public static void get(HttpServletResponse response, Map sources, + Map channels, Map sinks) throws IOException { response.setContentType("application/json; charset=utf-8"); response.setStatus(HttpServletResponse.SC_OK); String jsonStr = "{\"success\":\"true\",\"stats\":{\"sources\":["; @@ -181,8 +181,8 @@ public static void get(HttpServletResponse response, ImmutableMap sources, - ImmutableMap channels, ImmutableMap sinks) throws IOException { + public static void put(HttpServletResponse response, Map sources, + Map channels, Map sinks) throws IOException { response.setContentType("application/json; charset=utf-8"); for (String key : sources.keySet()) { diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/nodes/CygnusApplication.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/nodes/CygnusApplication.java index d2231c27d..d86571258 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/nodes/CygnusApplication.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/nodes/CygnusApplication.java @@ -44,9 +44,10 @@ import org.apache.flume.node.MaterializedConfiguration; import org.apache.flume.node.PollingPropertiesFileConfigurationProvider; import org.apache.flume.node.PropertiesFileConfigurationProvider; -import org.slf4j.MDC; - -import com.google.common.collect.ImmutableMap; +import org.apache.logging.log4j.ThreadContext; +import java.util.UUID; +import java.util.Map; +//import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; @@ -78,9 +79,9 @@ public class CygnusApplication extends Application { private static final CygnusLogger LOGGER = new CygnusLogger(CygnusApplication.class); private static JettyServer mgmtIfServer; - private static ImmutableMap sourcesRef; - private static ImmutableMap channelsRef; - private static ImmutableMap sinksRef; + private static Map sourcesRef; + private static Map channelsRef; + private static Map sinksRef; private static LifecycleSupervisor supervisorRef; private static final int CHANNEL_CHECKING_INTERVAL = 5000; private static final int YAFS_CHECKING_INTERVAL = 1000; @@ -135,11 +136,14 @@ private void getSupervisorRef() throws NoSuchFieldException, IllegalAccessExcept @Override @Subscribe public synchronized void handleConfigurationEvent(MaterializedConfiguration conf) { + LOGGER.debug("handleConfigurationEvent with conf: " + conf.toString()); // Stop checking threads until configuration is loaded if (yafs != null) { yafs.setReloading(true); LOGGER.debug("Pausing YAFS."); } + + super.handleConfigurationEvent(conf); if (firstTime) { // get references to the different elements of the agent, this will be needed when shutting down Cygnus in a @@ -147,13 +151,11 @@ public synchronized void handleConfigurationEvent(MaterializedConfiguration conf sourcesRef = conf.getSourceRunners(); channelsRef = conf.getChannels(); sinksRef = conf.getSinkRunners(); - LOGGER.debug("References to Flume components have been taken"); + LOGGER.debug("References to Flume components have been taken for fist time"); firstTime = false; return; } // if - super.handleConfigurationEvent(conf); - // get references to the different elements of the agent, this will be needed when shutting down Cygnus in a // certain order sourcesRef = conf.getSourceRunners(); @@ -178,11 +180,12 @@ public static void main(String[] args) { try { // Set some MDC logging fields to 'N/A' for this thread // Later in this method the component field will be given a value - org.apache.log4j.MDC.put(CommonConstants.LOG4J_CORR, CommonConstants.NA); - org.apache.log4j.MDC.put(CommonConstants.LOG4J_TRANS, CommonConstants.NA); - org.apache.log4j.MDC.put(CommonConstants.LOG4J_SVC, CommonConstants.NA); - org.apache.log4j.MDC.put(CommonConstants.LOG4J_SUBSVC, CommonConstants.NA); - org.apache.log4j.MDC.put(CommonConstants.LOG4J_COMP, CommonConstants.NA); + ThreadContext.put("id", UUID.randomUUID().toString()); + ThreadContext.put(CommonConstants.LOG4J_CORR, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_TRANS, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_SVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_SUBSVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_COMP, CommonConstants.NA); // Print Cygnus starting trace including version LOGGER.info("Starting Cygnus, version " + CommonUtils.getCygnusVersion() + "." @@ -229,7 +232,10 @@ public static void main(String[] args) { CommandLine commandLine = parser.parse(options, args); File configurationFile = new File(commandLine.getOptionValue('f')); - String agentName = commandLine.getOptionValue('n'); + String agentName = CommonConstants.DEF_AGENT_NAME; + if (commandLine.hasOption('n')) { + agentName = commandLine.getOptionValue('n'); + } // if boolean reload = !commandLine.hasOption("no-reload-conf"); String configurationPath = configurationFile.getParent(); @@ -299,6 +305,7 @@ public static void main(String[] args) { pollingInterval); components.add(configurationProvider); application = new CygnusApplication(components); + application.handleConfigurationEvent(configurationProvider.getConfiguration()); eventBus.register(application); } else { LOGGER.debug("no-reload-conf was set, thus the configuration file will only be read this time"); @@ -309,7 +316,7 @@ public static void main(String[] args) { } // if else // Set MDC logging field value for component - MDC.put(CommonConstants.LOG4J_COMP, commandLine.getOptionValue('n')); + ThreadContext.put(CommonConstants.LOG4J_COMP, agentName); // start the Cygnus application application.start(); diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/utils/CommonConstants.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/utils/CommonConstants.java index ae34ddf1f..9c4a1ae55 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/utils/CommonConstants.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/utils/CommonConstants.java @@ -63,6 +63,9 @@ private CommonConstants() { public static final String LOG4J_SVC = "service"; public static final String LOG4J_SUBSVC = "subservice"; public static final String LOG4J_COMP = "agent"; + + // Agent Name + public static final String DEF_AGENT_NAME = "cygnus-ngsi"; // encoding public static final String INTERNAL_CONCATENATOR = "="; diff --git a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/utils/CommonUtils.java b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/utils/CommonUtils.java index baea29fc1..74c12682f 100644 --- a/cygnus-common/src/main/java/com/telefonica/iot/cygnus/utils/CommonUtils.java +++ b/cygnus-common/src/main/java/com/telefonica/iot/cygnus/utils/CommonUtils.java @@ -49,7 +49,7 @@ import org.apache.hadoop.metrics.spi.AbstractMetricsContext; import org.apache.http.impl.DefaultBHttpServerConnection; import org.apache.http.impl.conn.PoolingClientConnectionManager; -import org.apache.log4j.pattern.SequenceNumberPatternConverter; +import org.apache.logging.log4j.core.pattern.SequenceNumberPatternConverter; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/ArcgisFeatureTableTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/ArcgisFeatureTableTest.java index 1e7047337..eecff4ac9 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/ArcgisFeatureTableTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/ArcgisFeatureTableTest.java @@ -23,7 +23,8 @@ import java.util.List; -import org.apache.log4j.BasicConfigurator; +import org.apache.logging.log4j.core.config.Configurator; +import org.apache.logging.log4j.core.config.DefaultConfiguration; import org.junit.Before; import org.junit.Test; @@ -45,7 +46,7 @@ public class ArcgisFeatureTableTest implements ArcgisBaseTest { */ @Before public void setUp() throws Exception { - BasicConfigurator.configure(); + Configurator.initialize(new DefaultConfiguration()); } private ArcgisFeatureTable connectArcgis() { diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/FeatureTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/FeatureTest.java index fc29e2173..222547700 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/FeatureTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/FeatureTest.java @@ -21,7 +21,8 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import org.apache.log4j.BasicConfigurator; +import org.apache.logging.log4j.core.config.Configurator; +import org.apache.logging.log4j.core.config.DefaultConfiguration; import org.junit.Before; import org.junit.Test; @@ -45,7 +46,7 @@ public class FeatureTest { */ @Before public void setUp() throws Exception { - BasicConfigurator.configure(); + Configurator.initialize(new DefaultConfiguration()); } /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/RestApiTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/RestApiTest.java index 017fc14bb..2f24412af 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/RestApiTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/RestApiTest.java @@ -23,7 +23,8 @@ import java.net.MalformedURLException; import java.util.HashMap; -import org.apache.log4j.BasicConfigurator; +import org.apache.logging.log4j.core.config.Configurator; +import org.apache.logging.log4j.core.config.DefaultConfiguration; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -43,7 +44,7 @@ public class RestApiTest extends RestApi{ */ @Before public void setUp() { - BasicConfigurator.configure(); + Configurator.initialize(new DefaultConfiguration()); } /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/RestFeatureTableTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/RestFeatureTableTest.java index f7be87051..12ec3b355 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/RestFeatureTableTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/arcgis/RestFeatureTableTest.java @@ -25,8 +25,10 @@ import java.util.ArrayList; import java.util.List; -import org.apache.log4j.BasicConfigurator; -import org.apache.log4j.Logger; +import org.apache.logging.log4j.core.config.Configurator; +import org.apache.logging.log4j.core.config.DefaultConfiguration; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; import org.junit.Before; import org.junit.Test; @@ -43,14 +45,14 @@ */ public class RestFeatureTableTest implements ArcgisBaseTest { - static final Logger LOGGER = Logger.getLogger(RestFeatureTableTest.class); + static final Logger LOGGER = LogManager.getLogger(RestFeatureTableTest.class); /** * */ @Before public void setUp() { - BasicConfigurator.configure(); + Configurator.initialize(new DefaultConfiguration()); } /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/elasticsearch/ElasticsearchBackendImplTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/elasticsearch/ElasticsearchBackendImplTest.java index f949e83d5..28668a1e2 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/elasticsearch/ElasticsearchBackendImplTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/elasticsearch/ElasticsearchBackendImplTest.java @@ -35,8 +35,11 @@ import org.apache.http.entity.StringEntity; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicHttpResponse; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import org.junit.Before; @@ -89,7 +92,11 @@ public static class HttpSuccessTest { */ @BeforeClass public static void setUpClass() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // setUpClass @Mock @@ -237,7 +244,11 @@ public static class HttpFailureTest { */ @BeforeClass public static void setUpClass() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // setUpClass @Mock @@ -320,7 +331,11 @@ public static class InvalidIndexAndOrTypeTest { */ @BeforeClass public static void setUpClass() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // setUpClass @Mock @@ -391,7 +406,11 @@ public static class InvalidDataTest { */ @BeforeClass public static void setUpClass() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // setUpClass @Mock @@ -501,7 +520,11 @@ public static class InvalidCharsetTest { */ @BeforeClass public static void setUpClass() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // setUpClass @Mock diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/kafka/KafkaBackendImplTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/kafka/KafkaBackendImplTest.java index cfe2aee28..ee430de96 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/kafka/KafkaBackendImplTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/kafka/KafkaBackendImplTest.java @@ -20,8 +20,11 @@ import static com.telefonica.iot.cygnus.utils.CommonUtilsForTests.getTestTraceHead; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Ignore; @@ -48,7 +51,11 @@ public class KafkaBackendImplTest { * Constructor. */ public KafkaBackendImplTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // KafkaBackendImplTest /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/mongo/MongoBackendImplTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/mongo/MongoBackendImplTest.java index fd6efb4f6..594c986cc 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/mongo/MongoBackendImplTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/mongo/MongoBackendImplTest.java @@ -21,8 +21,11 @@ import static com.telefonica.iot.cygnus.utils.CommonUtilsForTests.getTestTraceHead; import java.util.GregorianCalendar; import java.util.TimeZone; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import org.junit.Test; @@ -36,7 +39,11 @@ public class MongoBackendImplTest { * Constructor. */ public MongoBackendImplTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // MongoBackendImplTest /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/sql/SQLCacheTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/sql/SQLCacheTest.java index d70d01d85..507e84a6b 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/sql/SQLCacheTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/backends/sql/SQLCacheTest.java @@ -17,8 +17,11 @@ */ package com.telefonica.iot.cygnus.backends.sql; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.junit.Test; import static com.telefonica.iot.cygnus.utils.CommonUtilsForTests.getTestTraceHead; @@ -30,7 +33,11 @@ public class SQLCacheTest { * Constructor. */ public SQLCacheTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // SQLCacheTest /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/handlers/CygnusHandlerTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/handlers/CygnusHandlerTest.java index 04b7dd330..858a1744d 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/handlers/CygnusHandlerTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/handlers/CygnusHandlerTest.java @@ -19,8 +19,11 @@ import com.telefonica.iot.cygnus.metrics.CygnusMetrics; import static com.telefonica.iot.cygnus.utils.CommonUtilsForTests.getTestTraceHead; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -35,7 +38,11 @@ public class CygnusHandlerTest { * Constructor. */ public CygnusHandlerTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // CygnusHandlerTest /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/management/ManagementInterfaceTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/management/ManagementInterfaceTest.java index 1ea8bb025..12a9c8a83 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/management/ManagementInterfaceTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/management/ManagementInterfaceTest.java @@ -40,8 +40,11 @@ import java.io.BufferedWriter; import java.io.FileWriter; import javax.servlet.http.HttpServletResponseWrapper; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.junit.After; import org.junit.Rule; import org.junit.rules.TemporaryFolder; @@ -59,7 +62,11 @@ public class ManagementInterfaceTest { * Constructor. */ public ManagementInterfaceTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // ManagementInterfaceTest /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/management/MetricsHandlersTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/management/MetricsHandlersTest.java index 5fb0a5fc2..fde6c77ce 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/management/MetricsHandlersTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/management/MetricsHandlersTest.java @@ -31,8 +31,11 @@ import org.apache.flume.source.EventDrivenSourceRunner; import org.apache.flume.source.http.HTTPSource; import org.apache.flume.source.http.HTTPSourceHandler; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import org.junit.Test; @@ -46,7 +49,11 @@ public class MetricsHandlersTest { * Constructor. */ public MetricsHandlersTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // MetricsHandlersTest /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/metrics/CygnusMetricsTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/metrics/CygnusMetricsTest.java index 5405b9ee0..750328e67 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/metrics/CygnusMetricsTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/metrics/CygnusMetricsTest.java @@ -7,8 +7,11 @@ import com.telefonica.iot.cygnus.metrics.CygnusMetrics.Metrics; import static com.telefonica.iot.cygnus.utils.CommonUtilsForTests.getTestTraceHead; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import org.junit.Test; @@ -22,7 +25,11 @@ public class CygnusMetricsTest { * Constructor. */ public CygnusMetricsTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // CygnusMetricsTest /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/nodes/CygnusApplicationTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/nodes/CygnusApplicationTest.java index 35af65218..6b4d6dc4e 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/nodes/CygnusApplicationTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/nodes/CygnusApplicationTest.java @@ -23,8 +23,11 @@ import java.security.Permission; import java.util.concurrent.atomic.AtomicBoolean; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -44,7 +47,11 @@ public class CygnusApplicationTest { * Constructor. */ public CygnusApplicationTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // MySQLCacheTest /** diff --git a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/utils/CommonUtilsTest.java b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/utils/CommonUtilsTest.java index ca0790559..65b03d386 100644 --- a/cygnus-common/src/test/java/com/telefonica/iot/cygnus/utils/CommonUtilsTest.java +++ b/cygnus-common/src/test/java/com/telefonica/iot/cygnus/utils/CommonUtilsTest.java @@ -19,9 +19,11 @@ import static com.telefonica.iot.cygnus.utils.CommonUtilsForTests.getTestTraceHead; import java.text.ParseException; -import java.util.logging.Logger; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import static org.junit.Assert.assertEquals; @@ -41,7 +43,11 @@ public class CommonUtilsTest { * Constructor. */ public CommonUtilsTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // CommonUtilsTest /** diff --git a/cygnus-ngsi-ld/pom.xml b/cygnus-ngsi-ld/pom.xml index 929345bab..dc3dee668 100644 --- a/cygnus-ngsi-ld/pom.xml +++ b/cygnus-ngsi-ld/pom.xml @@ -36,14 +36,19 @@ - log4j - log4j - 1.2.17 + org.apache.logging.log4j + log4j-api + 2.17.2 - org.slf4j - slf4j-simple - 1.7.21 + org.apache.logging.log4j + log4j-core + 2.17.2 + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.17.2 diff --git a/cygnus-ngsi/pom.xml b/cygnus-ngsi/pom.xml index e437bbb0a..08ddd056d 100644 --- a/cygnus-ngsi/pom.xml +++ b/cygnus-ngsi/pom.xml @@ -37,14 +37,21 @@ - log4j - log4j - 1.2.17 + org.apache.logging.log4j + log4j-api + 2.17.2 + pom - org.slf4j - slf4j-simple - 1.7.21 + org.apache.logging.log4j + log4j-core + 2.17.2 + pom + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.17.2 diff --git a/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/handlers/NGSIRestHandler.java b/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/handlers/NGSIRestHandler.java index b07e20a50..defd98c49 100644 --- a/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/handlers/NGSIRestHandler.java +++ b/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/handlers/NGSIRestHandler.java @@ -43,7 +43,8 @@ import org.apache.flume.source.http.HTTPSourceHandler; import org.apache.http.MethodNotSupportedException; import com.telefonica.iot.cygnus.utils.NGSIConstants; -import org.slf4j.MDC; +import org.apache.logging.log4j.ThreadContext; +import java.util.UUID; /** * @@ -165,11 +166,13 @@ public void configure(Context context) { public List getEvents(javax.servlet.http.HttpServletRequest request) throws Exception { // Set some MDC logging fields to 'N/A' for this thread // Value for the component field is inherited from main thread (CygnusApplication.java) - org.apache.log4j.MDC.put(CommonConstants.LOG4J_CORR, CommonConstants.NA); - org.apache.log4j.MDC.put(CommonConstants.LOG4J_TRANS, CommonConstants.NA); - org.apache.log4j.MDC.put(CommonConstants.LOG4J_SVC, CommonConstants.NA); - org.apache.log4j.MDC.put(CommonConstants.LOG4J_SUBSVC, CommonConstants.NA); - + ThreadContext.put("id", UUID.randomUUID().toString()); + ThreadContext.put(CommonConstants.LOG4J_CORR, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_TRANS, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_SVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_SUBSVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_COMP, CommonConstants.DEF_AGENT_NAME); + // Result ArrayList ngsiEvents = new ArrayList<>(); @@ -253,8 +256,8 @@ public List getEvents(javax.servlet.http.HttpServletRequest request) thro } // while // Get a service and servicePath and store it in the log4j Mapped Diagnostic Context (MDC) - MDC.put(CommonConstants.LOG4J_SVC, service == null ? defaultService : service); - MDC.put(CommonConstants.LOG4J_SUBSVC, servicePath == null ? defaultServicePath : servicePath); + ThreadContext.put(CommonConstants.LOG4J_SVC, service == null ? defaultService : service); + ThreadContext.put(CommonConstants.LOG4J_SUBSVC, servicePath == null ? defaultServicePath : servicePath); // If the configuration is invalid, nothing has to be done but to return null if (invalidConfiguration) { @@ -301,8 +304,8 @@ public List getEvents(javax.servlet.http.HttpServletRequest request) thro // Store both of them in the log4j Mapped Diagnostic Context (MDC), this way it will be accessible // by the whole source code. - MDC.put(CommonConstants.LOG4J_CORR, corrId); - MDC.put(CommonConstants.LOG4J_TRANS, transId); + ThreadContext.put(CommonConstants.LOG4J_CORR, corrId); + ThreadContext.put(CommonConstants.LOG4J_TRANS, transId); LOGGER.debug("[NGSIRestHandler] Starting internal transaction (" + transId + ")"); // Get the data content diff --git a/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/interceptors/NGSINameMappingsInterceptor.java b/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/interceptors/NGSINameMappingsInterceptor.java index 945e7e761..2d1366864 100644 --- a/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/interceptors/NGSINameMappingsInterceptor.java +++ b/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/interceptors/NGSINameMappingsInterceptor.java @@ -40,6 +40,9 @@ import org.apache.flume.Event; import org.apache.flume.interceptor.Interceptor; +import org.apache.logging.log4j.ThreadContext; +import java.util.UUID; + /** * * @author frb @@ -196,6 +199,12 @@ private class PeriodicalNameMappingsReader extends Thread { @Override public void run() { + ThreadContext.put("id", UUID.randomUUID().toString()); + ThreadContext.put(CommonConstants.LOG4J_CORR, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_TRANS, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_SVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_SUBSVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_COMP, CommonConstants.DEF_AGENT_NAME); while (!stop) { // Check if the configuration has changed File nameMappingsFile = new File(nameMappingsConfFile); diff --git a/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/sinks/NGSISink.java b/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/sinks/NGSISink.java index 9e0f8f5db..6cfedf8af 100644 --- a/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/sinks/NGSISink.java +++ b/cygnus-ngsi/src/main/java/com/telefonica/iot/cygnus/sinks/NGSISink.java @@ -56,7 +56,7 @@ import org.apache.flume.Transaction; import org.apache.flume.ChannelException; import org.apache.flume.conf.Configurable; -import org.apache.log4j.MDC; +import org.apache.logging.log4j.ThreadContext; /** * @@ -339,6 +339,7 @@ public void configure(Context context) { @Override public void start() { super.start(); + ThreadContext.put(CommonConstants.LOG4J_COMP, CommonConstants.DEF_AGENT_NAME); if (invalidConfiguration) { LOGGER.info("[" + this.getName() + "] Startup completed. Nevertheless, there are errors " @@ -555,13 +556,13 @@ private Status processNewBatches() { } // if else // Set the correlation ID, transaction ID, service and service path in MDC - MDC.put(CommonConstants.LOG4J_CORR, + ThreadContext.put(CommonConstants.LOG4J_CORR, ngsiEvent.getHeaders().get(CommonConstants.HEADER_CORRELATOR_ID)); - MDC.put(CommonConstants.LOG4J_TRANS, + ThreadContext.put(CommonConstants.LOG4J_TRANS, ngsiEvent.getHeaders().get(NGSIConstants.FLUME_HEADER_TRANSACTION_ID)); // One batch is able to handle/process several events from different srv/subsrvs (#1983) - MDC.put(CommonConstants.LOG4J_SVC, CommonConstants.NA); - MDC.put(CommonConstants.LOG4J_SUBSVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_SVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_SUBSVC, CommonConstants.NA); // Accumulate the event accumulator.accumulate(ngsiEvent); @@ -671,10 +672,11 @@ private Status processNewBatches() { * thread (CygnusApplication.java). */ private void setMDCToNA() { - MDC.put(CommonConstants.LOG4J_CORR, CommonConstants.NA); - MDC.put(CommonConstants.LOG4J_TRANS, CommonConstants.NA); - MDC.put(CommonConstants.LOG4J_SVC, CommonConstants.NA); - MDC.put(CommonConstants.LOG4J_SUBSVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_CORR, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_TRANS, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_SVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_SUBSVC, CommonConstants.NA); + ThreadContext.put(CommonConstants.LOG4J_COMP, CommonConstants.DEF_AGENT_NAME); } // setMDCToNA /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/handlers/NGSIRestHandlerTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/handlers/NGSIRestHandlerTest.java index c6b7c0c08..d7992f9d9 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/handlers/NGSIRestHandlerTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/handlers/NGSIRestHandlerTest.java @@ -31,8 +31,11 @@ import javax.servlet.http.HttpServletRequest; import org.apache.flume.Context; import org.apache.flume.Event; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.*; // this is required by "fail" like assertions import org.junit.Before; import org.junit.runner.RunWith; @@ -222,7 +225,11 @@ public class NGSIRestHandlerTest { * Constructor. */ public NGSIRestHandlerTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSIRestHandlerTest /** @@ -952,4 +959,4 @@ private Context createContext(String notificationTarget, String defaultService, return context; } // createContext -} // NGSIRestHandlerTest \ No newline at end of file +} // NGSIRestHandlerTest diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/interceptors/NGSIEventTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/interceptors/NGSIEventTest.java index 05426221d..4d512e182 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/interceptors/NGSIEventTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/interceptors/NGSIEventTest.java @@ -23,8 +23,11 @@ import com.telefonica.iot.cygnus.utils.NGSIConstants; import com.telefonica.iot.cygnus.utils.NGSIUtilsForTests; import java.util.HashMap; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.junit.Assert; import static org.junit.Assert.assertEquals; import org.junit.Test; @@ -90,7 +93,11 @@ public class NGSIEventTest { * Constructor. */ public NGSIEventTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSIEventTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/interceptors/NGSINameMappingsInterceptorTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/interceptors/NGSINameMappingsInterceptorTest.java index c73b53183..725ef60d3 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/interceptors/NGSINameMappingsInterceptorTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/interceptors/NGSINameMappingsInterceptorTest.java @@ -26,8 +26,11 @@ import java.util.Map; import org.apache.commons.lang3.tuple.ImmutableTriple; import org.apache.flume.Context; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -203,7 +206,11 @@ public class NGSINameMappingsInterceptorTest { * Constructor. */ public NGSINameMappingsInterceptorTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSINameMappingsInterceptorTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIBatchTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIBatchTest.java index bd79cba4b..9dd7fa214 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIBatchTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIBatchTest.java @@ -20,8 +20,11 @@ import com.telefonica.iot.cygnus.interceptors.NGSIEvent; import static com.telefonica.iot.cygnus.utils.CommonUtilsForTests.getTestTraceHead; import com.telefonica.iot.cygnus.utils.NGSIUtilsForTests; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -36,7 +39,11 @@ public class NGSIBatchTest { * Constructor. */ public NGSIBatchTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSICKANSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSICKANSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSICKANSinkTest.java index b53392963..fa22a7234 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSICKANSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSICKANSinkTest.java @@ -40,8 +40,11 @@ import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import org.apache.flume.Context; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.junit.Test; import java.util.ArrayList; @@ -59,7 +62,11 @@ public class NGSICKANSinkTest { * Constructor. */ public NGSICKANSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSICKANSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSICartoDBSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSICartoDBSinkTest.java index 1cd63ea57..9d7cb85e9 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSICartoDBSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSICartoDBSinkTest.java @@ -36,8 +36,11 @@ import java.util.Map; import org.apache.flume.Context; import org.apache.flume.channel.MemoryChannel; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Rule; @@ -57,7 +60,11 @@ public class NGSICartoDBSinkTest { * Constructor. */ public NGSICartoDBSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSICartoDBSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIElasticsearchSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIElasticsearchSinkTest.java index 5fb067aeb..281c462d1 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIElasticsearchSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIElasticsearchSinkTest.java @@ -43,8 +43,11 @@ import javax.xml.bind.DatatypeConverter; import org.apache.flume.Context; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; @@ -87,7 +90,11 @@ public static class ConfigureTest { */ @BeforeClass public static void setUpClass() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // setUpClass @Parameters @@ -367,7 +374,11 @@ public static class StartAndStopInternalTest { */ @BeforeClass public static void setUpClass() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // setUpClass @Mock @@ -545,7 +556,11 @@ public static class PersistBatchTest { */ @BeforeClass public static void setUpClass() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // setUpClass @Mock @@ -1719,7 +1734,11 @@ public static class IndexNameTest { */ @BeforeClass public static void setUpClass() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // setUpClass @Parameters diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIHDFSSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIHDFSSinkTest.java index c2ed6b8af..5ed95595a 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIHDFSSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIHDFSSinkTest.java @@ -37,8 +37,11 @@ import com.telefonica.iot.cygnus.utils.NGSIConstants; import com.telefonica.iot.cygnus.utils.NGSIUtils; import org.apache.flume.Context; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.junit.Assert; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -58,7 +61,11 @@ public class NGSIHDFSSinkTest { * Constructor. */ public NGSIHDFSSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSIHDFSSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIKafkaSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIKafkaSinkTest.java index b7cdc7eab..1d09eaf73 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIKafkaSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIKafkaSinkTest.java @@ -19,8 +19,11 @@ import static com.telefonica.iot.cygnus.utils.CommonUtilsForTests.getTestTraceHead; import org.apache.flume.Context; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import org.junit.Test; @@ -43,7 +46,11 @@ public class NGSIKafkaSinkTest { * Constructor. */ public NGSIKafkaSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSIKafkaSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMongoBaseSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMongoBaseSinkTest.java index 1deb43299..3fcc57616 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMongoBaseSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMongoBaseSinkTest.java @@ -24,8 +24,11 @@ import com.telefonica.iot.cygnus.utils.NGSICharsets; import com.telefonica.iot.cygnus.utils.NGSIUtils; import com.telefonica.iot.cygnus.utils.NGSIUtilsForTests; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -62,7 +65,11 @@ public void expirateRecords(long expirationTime) throws CygnusExpiratingError { * Constructor. */ public NGSIMongoBaseSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSIMongoBaseSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMongoSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMongoSinkTest.java index 448b28fdb..b2a42b3f7 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMongoSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMongoSinkTest.java @@ -36,8 +36,11 @@ import com.telefonica.iot.cygnus.utils.NGSIConstants; import com.telefonica.iot.cygnus.utils.NGSIUtils; import org.apache.flume.Context; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.bson.Document; import org.junit.Assert; import org.junit.Test; @@ -61,7 +64,11 @@ public class NGSIMongoSinkTest { public static final String QUOTATION_MARK_CHAR = ""; public NGSIMongoSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMySQLSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMySQLSinkTest.java index f4e8523e3..8a1086659 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMySQLSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIMySQLSinkTest.java @@ -33,8 +33,11 @@ import com.telefonica.iot.cygnus.aggregation.NGSIGenericAggregator; import com.telefonica.iot.cygnus.utils.NGSIUtils; import org.apache.flume.Context; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; @@ -55,7 +58,11 @@ public class NGSIMySQLSinkTest { * Constructor. */ public NGSIMySQLSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSIMySQLSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIOrionBaseSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIOrionBaseSinkTest.java index a17e87c6a..ad7f32fd1 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIOrionBaseSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIOrionBaseSinkTest.java @@ -21,8 +21,11 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.json.JSONObject; import org.junit.Before; import org.junit.Test; @@ -56,7 +59,11 @@ public class NGSIOrionBaseSinkTest { * Constructor. */ public NGSIOrionBaseSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSIOrionBaseSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIPostgisSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIPostgisSinkTest.java index 2472f458a..13253616b 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIPostgisSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIPostgisSinkTest.java @@ -39,8 +39,11 @@ import java.util.Map; import org.apache.flume.Context; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; @@ -56,7 +59,11 @@ public class NGSIPostgisSinkTest { * Constructor. */ public NGSIPostgisSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSIPostgisSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIPostgreSQLSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIPostgreSQLSinkTest.java index c55dc599f..9707802ad 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIPostgreSQLSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSIPostgreSQLSinkTest.java @@ -31,8 +31,11 @@ import com.telefonica.iot.cygnus.utils.NGSIConstants; import com.telefonica.iot.cygnus.utils.NGSIUtils; import org.apache.flume.Context; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; @@ -52,7 +55,11 @@ public class NGSIPostgreSQLSinkTest { * Constructor. */ public NGSIPostgreSQLSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSIPostgreSQLSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSISTHSinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSISTHSinkTest.java index b6d07389e..e0879a25f 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSISTHSinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSISTHSinkTest.java @@ -21,8 +21,11 @@ import com.telefonica.iot.cygnus.utils.NGSIUtilsForTests; import java.util.Arrays; import org.apache.flume.Context; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -36,7 +39,11 @@ public class NGSISTHSinkTest { * Constructor. */ public NGSISTHSinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSISTHSinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSISinkTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSISinkTest.java index a2b563dbe..276eb6214 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSISinkTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/sinks/NGSISinkTest.java @@ -35,8 +35,11 @@ import org.apache.flume.Context; import org.apache.flume.channel.MemoryChannel; import org.apache.flume.lifecycle.LifecycleState; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.junit.Test; @@ -110,7 +113,11 @@ public void expirateRecords(long time) throws CygnusExpiratingError { * Constructor. */ public NGSISinkTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); + ctx.updateLoggers(); } // NGSISinkTest /** diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/utils/NGSICharsetsTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/utils/NGSICharsetsTest.java index cadbbc078..cd92b2fa3 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/utils/NGSICharsetsTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/utils/NGSICharsetsTest.java @@ -18,8 +18,11 @@ package com.telefonica.iot.cygnus.utils; import static com.telefonica.iot.cygnus.utils.CommonUtilsForTests.getTestTraceHead; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import static org.junit.Assert.assertEquals; import org.junit.Test; @@ -33,7 +36,10 @@ public class NGSICharsetsTest { * Constructor. */ public NGSICharsetsTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); } // NGSICharsetsTest // ---------- PostgreSQL --------- diff --git a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/utils/NGSIUtilsTest.java b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/utils/NGSIUtilsTest.java index 7da92251d..d7777a375 100644 --- a/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/utils/NGSIUtilsTest.java +++ b/cygnus-ngsi/src/test/java/com/telefonica/iot/cygnus/utils/NGSIUtilsTest.java @@ -24,8 +24,11 @@ import java.util.LinkedHashMap; import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configuration; +import org.apache.logging.log4j.core.config.LoggerConfig; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.junit.Test; @@ -42,7 +45,10 @@ public class NGSIUtilsTest { * Constructor. */ public NGSIUtilsTest() { - LogManager.getRootLogger().setLevel(Level.FATAL); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Configuration config = ctx.getConfiguration(); + LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME); + loggerConfig.setLevel(Level.FATAL); } // NGSIUtilsTest /** diff --git a/cygnus-twitter/pom.xml b/cygnus-twitter/pom.xml index 20bad411d..31b96fd95 100644 --- a/cygnus-twitter/pom.xml +++ b/cygnus-twitter/pom.xml @@ -15,6 +15,13 @@ UTF-8 + + + mvnrepository + https://repo1.maven.org/maven2 + + + @@ -33,13 +40,18 @@ org.apache.flume flume-ng-node - 1.9.0 + 1.11.0 - log4j - log4j - 1.2.17 + org.apache.logging.log4j + log4j-api + 2.17.2 + + + org.apache.logging.log4j + log4j-core + 2.17.2 diff --git a/docker/cygnus-common/Dockerfile b/docker/cygnus-common/Dockerfile index 5893856b6..adc8f16d3 100644 --- a/docker/cygnus-common/Dockerfile +++ b/docker/cygnus-common/Dockerfile @@ -47,7 +47,7 @@ ENV MVN_TGZ "apache-maven-${MVN_VER}-bin.tar.gz" ENV MVN_URL "http://www.eu.apache.org/dist/maven/maven-3/${MVN_VER}/binaries/${MVN_TGZ}" ENV MVN_HOME "/opt/apache-maven" -ENV FLUME_VER "1.9.0" +ENV FLUME_VER "1.11.0" ENV FLUME_TGZ "apache-flume-${FLUME_VER}-bin.tar.gz" ENV FLUME_URL "http://archive.apache.org/dist/flume/${FLUME_VER}/${FLUME_TGZ}" ENV FLUME_HOME "/opt/apache-flume" @@ -91,7 +91,7 @@ RUN \ cp ${CYGNUS_HOME}/cygnus-common/target/classes/cygnus-flume-ng ${FLUME_HOME}/bin/ && \ chmod +x ${FLUME_HOME}/bin/cygnus-flume-ng && \ # Instantiate some configuration files - cp ${CYGNUS_HOME}/cygnus-common/conf/log4j.properties.template ${FLUME_HOME}/conf/log4j.properties && \ + cp ${CYGNUS_HOME}/cygnus-common/conf/log4j2.properties.template ${FLUME_HOME}/conf/log4j2.properties && \ # Create Cygnus log folder mkdir /var/log/cygnus && \ # Cleanup to thin the final image diff --git a/docker/cygnus-ngsi-ld/Dockerfile b/docker/cygnus-ngsi-ld/Dockerfile index 286ea0fb9..2eb150077 100644 --- a/docker/cygnus-ngsi-ld/Dockerfile +++ b/docker/cygnus-ngsi-ld/Dockerfile @@ -267,7 +267,7 @@ ENV CYGNUS_ARCGIS_BATCH_TTL "" ENV MVN_VER "3.5.4" ENV MVN_HOME "/opt/apache-maven" -ENV FLUME_VER "1.9.0" +ENV FLUME_VER "1.11.0" ENV FLUME_HOME "/opt/apache-flume" ENV JAVA_VERSION "1.8.0" @@ -324,7 +324,7 @@ RUN \ cp ${CYGNUS_HOME}/cygnus-common/target/classes/cygnus-flume-ng ${FLUME_HOME}/bin/ && \ chmod +x ${FLUME_HOME}/bin/cygnus-flume-ng && \ echo "INFO: Instantiate some configuration files" && \ - cp ${CYGNUS_HOME}/cygnus-common/conf/log4j.properties.template ${FLUME_HOME}/conf/log4j.properties && \ + cp ${CYGNUS_HOME}/cygnus-common/conf/log4j2.properties.template ${FLUME_HOME}/conf/log4j2.properties && \ echo "INFO: Create Cygnus log folder" && \ mkdir -p /var/log/cygnus && \ chmod 777 /var/log/cygnus && \ diff --git a/docker/cygnus-ngsi/Dockerfile b/docker/cygnus-ngsi/Dockerfile index d3fdc3fd4..0b2e16789 100644 --- a/docker/cygnus-ngsi/Dockerfile +++ b/docker/cygnus-ngsi/Dockerfile @@ -28,7 +28,7 @@ ENV CYGNUS_CONF_PATH "/opt/apache-flume/conf" ENV CYGNUS_CONF_FILE "/opt/apache-flume/conf/agent.conf" ENV CYGNUS_AGENT_NAME "cygnus-ngsi" ENV CYGNUS_LOG_LEVEL "INFO" -ENV CYGNUS_LOG_APPENDER "console" +ENV CYGNUS_LOG_APPENDER "LOGFILE" ENV CYGNUS_SERVICE_PORT "5050" ENV CYGNUS_JAVA_OPTS "-Xms2048m -Xmx4096m" ENV CYGNUS_API_PORT "5080" @@ -254,8 +254,10 @@ ENV CYGNUS_ARCGIS_BATCH_TTL "" ENV MVN_VER "3.5.4" ENV MVN_HOME "/opt/apache-maven" -ENV FLUME_VER "1.9.0" +ENV FLUME_VER "1.11.0" ENV FLUME_HOME "/opt/apache-flume" +ENV FLUME_TGZ "apache-flume-${FLUME_VER}-bin.tar.gz" +ENV FLUME_URL "https://archive.apache.org/dist/flume/${FLUME_VER}/${FLUME_TGZ}" ENV JAVA_VERSION "1.8.0" @@ -284,10 +286,6 @@ RUN \ APACHE_DOMAIN="$(curl -s 'https://www.apache.org/dyn/closer.cgi?as_json=1' | python2 -c 'import json,sys;obj=json.load(sys.stdin);print obj["preferred"]')" \ || APACHE_DOMAIN="http://archive.apache.org/dist/" && \ MVN_URL="${APACHE_DOMAIN}maven/maven-3/${MVN_VER}/binaries/apache-maven-${MVN_VER}-bin.tar.gz" && \ - # FIXME #2179: Flume version has steped to 1.10.0 so 1.9.0 is no longer available in the usual place. - # Temporal fix is to download it from archive.apache.org. Once we move to 1.10.0, reenable the following line - # FLUME_URL="${APACHE_DOMAIN}flume/${FLUME_VER}/apache-flume-${FLUME_VER}-bin.tar.gz" && \ - FLUME_URL="https://archive.apache.org/dist/flume/stable/apache-flume-1.9.0-bin.tar.gz" && \ echo -e $'INFO: Java version <'${JAVA_VERSION}'>\n'$(java -version)'\nINFO: Apache domain <'${APACHE_DOMAIN}'>\nINFO: URL MAVEN <'${MVN_URL}'>\nINFO: URL FLUME <'${FLUME_URL}'>' && \ echo "INFO: Download and install Maven and Flume..." && \ curl --remote-name --location --insecure --silent --show-error "${MVN_URL}" && \ @@ -314,7 +312,7 @@ RUN \ cp ${CYGNUS_HOME}/cygnus-common/target/classes/cygnus-flume-ng ${FLUME_HOME}/bin/ && \ chmod +x ${FLUME_HOME}/bin/cygnus-flume-ng && \ echo "INFO: Instantiate some configuration files" && \ - cp ${CYGNUS_HOME}/cygnus-common/conf/log4j.properties.template ${FLUME_HOME}/conf/log4j.properties && \ + cp ${CYGNUS_HOME}/cygnus-common/conf/log4j2.properties.template ${FLUME_HOME}/conf/log4j2.properties && \ cp ${CYGNUS_HOME}/cygnus-ngsi/conf/name_mappings.conf.template ${FLUME_HOME}/conf/name_mappings.conf && \ echo "INFO: Create Cygnus log folder" && \ mkdir -p /var/log/cygnus && \ diff --git a/docker/cygnus-twitter/Dockerfile b/docker/cygnus-twitter/Dockerfile index d4ecc69a2..798fd4e09 100644 --- a/docker/cygnus-twitter/Dockerfile +++ b/docker/cygnus-twitter/Dockerfile @@ -46,7 +46,7 @@ ENV MVN_TGZ "apache-maven-${MVN_VER}-bin.tar.gz" ENV MVN_URL "http://www.eu.apache.org/dist/maven/maven-3/${MVN_VER}/binaries/${MVN_TGZ}" ENV MVN_HOME "/opt/apache-maven" -ENV FLUME_VER "1.9.0" +ENV FLUME_VER "1.11.0" ENV FLUME_TGZ "apache-flume-${FLUME_VER}-bin.tar.gz" ENV FLUME_URL "http://archive.apache.org/dist/flume/${FLUME_VER}/${FLUME_TGZ}" ENV FLUME_HOME "/opt/apache-flume" @@ -94,7 +94,7 @@ RUN \ cp ${CYGNUS_HOME}/cygnus-common/target/classes/cygnus-flume-ng ${FLUME_HOME}/bin/ && \ chmod +x ${FLUME_HOME}/bin/cygnus-flume-ng && \ # Instantiate some configuration files - cp ${CYGNUS_HOME}/cygnus-common/conf/log4j.properties.template ${FLUME_HOME}/conf/log4j.properties && \ + cp ${CYGNUS_HOME}/cygnus-common/conf/log4j2.properties.template ${FLUME_HOME}/conf/log4j2.properties && \ # Create Cygnus log folder mkdir /var/log/cygnus && \ # Cleanup to thin the final image