Merge "AAF-892- move the variable to follow rules"
[aaf/authz.git] / cadi / core / src / main / java / org / onap / aaf / cadi / PropAccess.java
index fac6a3f..9f4b4b9 100644 (file)
@@ -3,6 +3,8 @@
  * org.onap.aaf
  * ===========================================================================
  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
+ * 
+ * Modifications Copyright (C) 2018 IBM.
  * ===========================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 package org.onap.aaf.cadi;
 
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintStream;
 import java.io.PrintWriter;
+import java.io.StringBufferInputStream;
 import java.io.StringWriter;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -43,6 +47,7 @@ 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 = newISO8601();
+    private Symm symm;
                
     public static SimpleDateFormat newISO8601() {
        return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
@@ -50,7 +55,7 @@ public class PropAccess implements Access {
 
     public static final Level DEFAULT = Level.AUDIT;
     
-    private Symm symm;
+    
     private int level;
     private Properties props;
     private List<String> recursionProtection = null;
@@ -108,7 +113,6 @@ public class PropAccess implements Access {
     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
@@ -127,16 +131,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(); 
                }
         }
@@ -306,6 +308,11 @@ public class PropAccess implements Access {
             if (o!=null) {
                if(o.getClass().isArray()) {
                        first = write(first,sb,(Object[])o);
+               } else if(o instanceof Throwable) {
+                       ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                       PrintStream ps = new PrintStream(baos);
+                       ((Throwable)o).printStackTrace(ps);
+                       sb.append(baos.toString());
                } else {
                        s=o.toString();
                        if (first) {