/*- * ============LICENSE_START======================================================= * PROJECT * ================================================================================ * 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.onap.dcae.commonFunction; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.att.nsa.clock.SaClock; import com.att.nsa.logging.LoggingContext; import com.att.nsa.logging.LoggingContextFactory; import com.att.nsa.logging.log4j.EcompFields; import jline.internal.Log; public class VESLogger { public static final String VES_AGENT = "VES_AGENT"; public static Logger auditLog; public static Logger metricsLog; public static Logger errorLog; public static Logger debugLog; // Common LoggingContext private static LoggingContext commonLC = null; // Thread-specific LoggingContext private static LoggingContext threadLC = null; public LoggingContext lc ; /** * Returns the common LoggingContext instance that is the base context * for all subsequent instances. * * @return the common LoggingContext */ public static LoggingContext getCommonLoggingContext() { if (commonLC == null) { commonLC = new LoggingContextFactory.Builder().build(); final UUID uuid = java.util.UUID.randomUUID(); commonLC.put("requestId", uuid.toString()); } return commonLC; } /** * Get a logging context for the current thread that's based on the common logging context. * Populate the context with context-specific values. * * @return a LoggingContext for the current thread */ public static LoggingContext getLoggingContextForThread (UUID aUuid) { // note that this operation requires everything from the common context // to be (re)copied into the target context. That seems slow, but it actually // helps prevent the thread from overwriting supposedly common data. It also // should be fairly quick compared with the overhead of handling the actual // service call. threadLC = new LoggingContextFactory.Builder(). withBaseContext ( getCommonLoggingContext () ). build(); // Establish the request-specific UUID, as long as we are here... threadLC.put("requestId", aUuid.toString()); threadLC.put ( EcompFields.kEndTimestamp, SaClock.now () ); return threadLC; } /** * Get a logging context for the current thread that's based on the common logging context. * Populate the context with context-specific values. * * @return a LoggingContext for the current thread */ public static LoggingContext getLoggingContextForThread (String aUuid) { // note that this operation requires everything from the common context // to be (re)copied into the target context. That seems slow, but it actually // helps prevent the thread from overwriting supposedly common data. It also // should be fairly quick compared with the overhead of handling the actual // service call. threadLC = new LoggingContextFactory.Builder(). withBaseContext ( getCommonLoggingContext () ). build(); // Establish the request-specific UUID, as long as we are here... threadLC.put("requestId", aUuid); threadLC.put ( "statusCode", "COMPLETE" ); threadLC.put ( EcompFields.kEndTimestamp, SaClock.now () ); return threadLC; } public static void setUpEcompLogging() { // Create ECOMP Logger instances auditLog = LoggerFactory.getLogger("com.att.ecomp.audit"); metricsLog = LoggerFactory.getLogger("com.att.ecomp.metrics"); debugLog = LoggerFactory.getLogger("com.att.ecomp.debug"); errorLog = LoggerFactory.getLogger("com.att.ecomp.error"); final LoggingContext lc = getCommonLoggingContext(); String ipAddr = "127.0.0.1"; String hostname = "localhost"; try { final InetAddress ip = InetAddress.getLocalHost (); hostname = ip.getCanonicalHostName (); ipAddr = ip.getHostAddress(); } catch ( UnknownHostException x ) { Log.debug(x.getMessage()); } lc.put ( "serverName", hostname ); lc.put ( "serviceName", "VESCollecor" ); lc.put ( "statusCode", "RUNNING" ); lc.put ( "targetEntity", "NULL"); lc.put ( "targetServiceName", "NULL"); lc.put ( "server", hostname ); lc.put ( "serverIpAddress", ipAddr.toString () ); // instance UUID is meaningless here, so we just create a new one each time the // server starts. One could argue each new instantiation of the service should // have a new instance ID. lc.put ( "instanceUuid", "" ); lc.put ( "severity", "" ); lc.put ( EcompFields.kEndTimestamp, SaClock.now () ); lc.put("EndTimestamp", SaClock.now ()); lc.put("partnerName", "NA"); } }