aboutsummaryrefslogtreecommitdiffstats
path: root/common/src/main/java/org/openecomp/mso/logger/MsoLoggingServlet.java
diff options
context:
space:
mode:
authorChrisC <cc697w@intl.att.com>2017-01-31 11:40:03 +0100
committerChrisC <cc697w@intl.att.com>2017-01-31 12:59:33 +0100
commit025301d08b061482c1f046d562bf017c8cbcfe8d (patch)
tree68a2a549736c9bf0f7cd4e71c76e40ef7e2606f2 /common/src/main/java/org/openecomp/mso/logger/MsoLoggingServlet.java
parent2754ad52f833278a5c925bd788a16d1dce16a598 (diff)
Initial OpenECOMP MSO commit
Change-Id: Ia6a7574859480717402cc2f22534d9973a78fa6d Signed-off-by: ChrisC <cc697w@intl.att.com>
Diffstat (limited to 'common/src/main/java/org/openecomp/mso/logger/MsoLoggingServlet.java')
-rw-r--r--common/src/main/java/org/openecomp/mso/logger/MsoLoggingServlet.java155
1 files changed, 155 insertions, 0 deletions
diff --git a/common/src/main/java/org/openecomp/mso/logger/MsoLoggingServlet.java b/common/src/main/java/org/openecomp/mso/logger/MsoLoggingServlet.java
new file mode 100644
index 0000000000..568ab22447
--- /dev/null
+++ b/common/src/main/java/org/openecomp/mso/logger/MsoLoggingServlet.java
@@ -0,0 +1,155 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - MSO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.logger;
+
+
+import java.util.List;
+
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Response;
+
+import org.slf4j.LoggerFactory;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.joran.JoranConfigurator;
+import ch.qos.logback.core.Appender;
+
+@Path("/logging")
+public class MsoLoggingServlet {
+
+ private static final String DEBUGLOG = "asyncEELFDebug";
+ private MsoLogger logger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
+ private static final String GENERAL_LOGGER = "com.att.eelf.error";
+ private static final String AUDIT_LOGGER = "com.att.eelf.audit";
+ private static final String METRICS_LOGGER = "com.att.eelf.metrics";
+
+ @GET
+ @Path("/setLevel/{logContext}/{level}")
+ @Produces("text/plain")
+ public Response setLogLevel (@PathParam("logContext") String logContext, @PathParam("level") String level) {
+ logger.info (MessageEnum.LOGGER_SETUP, "", "");
+
+ LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
+ JoranConfigurator jc = new JoranConfigurator();
+ jc.setContext(context);
+ Logger updateLogger = context.getLogger (logContext);
+
+ if (updateLogger == null) {
+ logger.info (MessageEnum.LOGGER_NOT_FOUND, logContext, "", "");
+ String response = "Unknown logger: " + logContext;
+ return Response.status (200).entity (response).build ();
+ }
+
+ Level currentLevel = updateLogger.getLevel();
+ if (!currentLevel.equals(Level.toLevel(level))) {
+ Level newLevel = Level.toLevel (level);
+ updateLogger.setLevel (newLevel);
+ logger.info (MessageEnum.LOGGER_UPDATE_SUC, updateLogger.getName (), currentLevel.toString(), newLevel.toString());
+ }
+
+ String response = "Log level set to: " + level + " for " + updateLogger.getName ();
+ return Response.status (200).entity (response).build ();
+
+ }
+
+ @GET
+ @Path("/loggers")
+ @Produces("text/plain")
+ @SuppressWarnings("rawtypes")
+ public Response getLoggers () {
+ StringBuilder response = new StringBuilder ();
+ LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
+ JoranConfigurator jc = new JoranConfigurator();
+ jc.setContext(context);
+ List <Logger> loggerList = context.getLoggerList();
+ for (Logger logger:loggerList) {
+ //if (logger.getLevel() != null) {
+ response.append (logger.getName () + ":" + logger.getLevel () + " (" + logger.getEffectiveLevel () + ")\n");
+ //}
+ }
+ return Response.status (200).entity (response).build ();
+
+ }
+
+ @GET
+ @Path("/debug")
+ @Produces("text/plain")
+ @SuppressWarnings("rawtypes")
+ /*
+ * Debug log is used as a general log to store all the logs events, including events generated by MSO code or by
+ * components used by MSO.
+ * This method will only enable/disable the function to store MSO generated events into debug log,
+ * since those events will also be generated to error, audit, metrics log.
+ * The events generated by other components will not be affected by this interface.
+ */
+ public Response updateDebugAppender (@DefaultValue("true") @QueryParam("enable") Boolean enable) {
+ String response;
+
+ LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
+ JoranConfigurator jc = new JoranConfigurator();
+ jc.setContext(context);
+ List <Logger> loggerList = context.getLoggerList();
+ Logger rootLogger = context.getLogger("ROOT");
+ Appender appender = rootLogger.getAppender(DEBUGLOG);
+
+ if (null == appender) {
+ return Response.status (500).entity ("Not able to found Debug appender. Please verify to make sure the needed logback file is present in the config folder.").build ();
+ }
+
+ if (enable) {
+ logger.info (MessageEnum.LOGGER_UPDATE_DEBUG, "", "");
+
+ for (Logger logger: loggerList) {
+ if (isMsoLogger (logger.getName ()) && logger.getAppender (DEBUGLOG) == null && logger.getLevel () != null) {
+ logger.addAppender (appender);
+ logger.setAdditive(false);
+ }
+ }
+ logger.info (MessageEnum.LOGGER_UPDATE_DEBUG_SUC, "enabled", "", "");
+ response = "Debuglog successfully enabled.";
+ } else {
+ logger.info (MessageEnum.LOGGER_UPDATE_DEBUG, "", "");
+ for (Logger logger: loggerList) {
+ if (isMsoLogger (logger.getName ())) {
+ logger.detachAppender (appender);
+ }
+ }
+ logger.info (MessageEnum.LOGGER_UPDATE_DEBUG_SUC, "disabled", "", "");
+ response = "Debuglog successfully disabled.";
+ }
+ return Response.status (200).entity (response).build ();
+
+
+ }
+
+ private boolean isMsoLogger (String loggerName) {
+ return loggerName.contains (GENERAL_LOGGER) || loggerName.equals (AUDIT_LOGGER)
+ || loggerName.equals (METRICS_LOGGER);
+ }
+
+}