X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cadi%2Fcore%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fcadi%2FPropAccess.java;h=994e32501ea863ce16d50581a1749195ab4e88b3;hb=d0d6604a0371457d84eceb56d9fff668e865253f;hp=2fe5f41c1fd95be80f553e53ece4119ea5459c61;hpb=a174f8ddbc5eb78a648fb68b33ef18cb64d81fda;p=aaf%2Fauthz.git diff --git a/cadi/core/src/main/java/org/onap/aaf/cadi/PropAccess.java b/cadi/core/src/main/java/org/onap/aaf/cadi/PropAccess.java index 2fe5f41c..994e3250 100644 --- a/cadi/core/src/main/java/org/onap/aaf/cadi/PropAccess.java +++ b/cadi/core/src/main/java/org/onap/aaf/cadi/PropAccess.java @@ -28,6 +28,7 @@ import java.io.InputStream; import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; +import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -41,7 +42,11 @@ import org.onap.aaf.cadi.util.Split; public class PropAccess implements Access { // Sonar says cannot be static... it's ok. not too many PropAccesses created. - private final SimpleDateFormat iso8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); + private final SimpleDateFormat iso8601 = newISO8601(); + + public static SimpleDateFormat newISO8601() { + return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); + } public static final Level DEFAULT = Level.AUDIT; @@ -100,10 +105,9 @@ public class PropAccess implements Access { init(nprops); } - protected void init(Properties p) { + protected synchronized void init(Properties p) { // Make sure these two are set before any changes in Logging name = "cadi"; - level=DEFAULT.maskOf(); props = new Properties(); // First, load related System Properties @@ -122,16 +126,14 @@ public class PropAccess implements Access { // Preset LogLevel String sLevel = props.getProperty(Config.CADI_LOGLEVEL); - if (sLevel!=null) { - level=Level.valueOf(sLevel).maskOf(); - } - // Third, load any Chained Property Files load(props.getProperty(Config.CADI_PROP_FILES)); if(sLevel==null) { // if LogLev wasn't set before, check again after Chained Load sLevel = props.getProperty(Config.CADI_LOGLEVEL); - if (sLevel!=null) { + if (sLevel==null) { + level=DEFAULT.maskOf(); + } else { level=Level.valueOf(sLevel).maskOf(); } } @@ -149,6 +151,7 @@ public class PropAccess implements Access { name = props.getProperty(Config.CADI_LOGNAME, name); SecurityInfo.setHTTPProtocols(this); + } @@ -256,31 +259,41 @@ public class PropAccess implements Access { } } - protected StringBuilder buildMsg(Level level, Object[] elements) { + public StringBuilder buildMsg(Level level, Object[] elements) { return buildMsg(name,iso8601,level,elements); } - - public static StringBuilder buildMsg(final String name, final SimpleDateFormat sdf, Level level, Object[] elements) { - StringBuilder sb = new StringBuilder(sdf.format(new Date())); - sb.append(' '); - sb.append(level.name()); - sb.append(" ["); - sb.append(name); - + + /* + * Need to pass in DateFormat per thread, because not marked as thread safe + */ + public static StringBuilder buildMsg(final String name, final DateFormat sdf, Level level, Object[] elements) { + final StringBuilder sb; int end = elements.length; - if (end<=0) { - sb.append("] "); - } else { - int idx = 0; - if(elements[idx]!=null && - elements[idx] instanceof Integer) { - sb.append('-'); - sb.append(elements[idx]); - ++idx; - } - sb.append("] "); - write(true,sb,elements); - } + if(sdf==null) { + sb = new StringBuilder(); + write(true,sb,elements); + } else { + sb = new StringBuilder( + sdf.format(new Date()) + ); + sb.append(' '); + sb.append(level.name()); + sb.append(" ["); + sb.append(name); + if (end<=0) { + sb.append("] "); + } else { + int idx = 0; + if(elements[idx]!=null && + elements[idx] instanceof Integer) { + sb.append('-'); + sb.append(elements[idx]); + ++idx; + } + sb.append("] "); + write(true,sb,elements); + } + } return sb; }