Merge "Sonar Fix: Owner.java"
[aaf/authz.git] / misc / env / src / main / java / org / onap / aaf / misc / env / LogTarget.java
index 8915bec..84eb5ee 100644 (file)
@@ -32,7 +32,7 @@ import org.onap.aaf.misc.env.util.Chrono;
  * Implement for any Logging Library of your choice, and for any logging string Format desired.\r
  * \r
  * Included are several Static Implementations for various uses:\r
- *      NULL: Does nothing with Logging Messages\r
+ *      NULL: Does nothing with Logging Messages\r
  *   SYSOUT: Writes messages in general form to System Out\r
  *   SYSERR: Writes messages in general form to System Err\r
  *   \r
@@ -40,103 +40,88 @@ import org.onap.aaf.misc.env.util.Chrono;
  *\r
  */\r
 public interface LogTarget {\r
-       public abstract void log(Object... msgs);\r
-       public abstract void log(Throwable e, Object ... msgs);\r
-       public abstract boolean isLoggable();\r
-       public abstract void printf(String fmt, Object ... vars);\r
-\r
-       // A Convenient LogTarget to insert when a NO-OP is desired.\r
-       public static final LogTarget NULL = new LogTarget() {\r
-               public void log(Object ... msgs) {\r
-               }\r
-\r
-               public void log(Throwable t, Object ... msgs) {\r
-               }\r
-\r
-               public boolean isLoggable() {\r
-                       return false;\r
-               }\r
-\r
-               @Override\r
-               public void printf(String fmt, Object ... vars) {\r
-               }\r
-       };\r
-\r
-       // A Convenient LogTarget to write to the Console\r
-       public static final LogTarget SYSOUT = new LogTarget() {\r
-               public void log(Object ... msgs) {\r
-                       PrintStream out = System.out;\r
-                       out.print(org.onap.aaf.misc.env.util.Chrono.dateFmt.format(new Date()));\r
-                       out.print(": ");\r
-                       for(Object str : msgs) {\r
-                               if(str!=null) {\r
-                                       out.print(str.toString());\r
-                                       out.print(' ');\r
-                               } else {\r
-                                       out.print("null ");\r
-                               }\r
-                       }\r
-                       out.println();\r
-               }\r
-\r
-               public void log(Throwable t, Object ... msgs) {\r
-                       PrintStream out = System.out;\r
-                       out.print(Chrono.dateFmt.format(new Date()));\r
-                       out.print(": ");\r
-                       for(Object str : msgs) {\r
-                               out.print(str.toString());\r
-                               out.print(' ');\r
-                       }\r
-                       out.println();\r
-                       t.printStackTrace(out);\r
-                       out.println();\r
-               }\r
-\r
-               public boolean isLoggable() {\r
-                       return true;\r
-               }\r
-\r
-               @Override\r
-               public void printf(String fmt, Object ... vars) {\r
-                       log(String.format(fmt,vars));\r
-               }\r
-       };\r
-       \r
-       // A Convenient LogTarget to write to the Console\r
-       public static final LogTarget SYSERR = new LogTarget() {\r
-               public void log(Object ... msgs) {\r
-                       PrintStream out = System.err;\r
-                       out.print(Chrono.dateFmt.format(new Date()));\r
-                       out.print(": ");\r
-                       for(Object str : msgs) {\r
-                               out.print(str.toString());\r
-                               out.print(' ');\r
-                       }\r
-                       out.println();\r
-                       out.flush();\r
-               }\r
-\r
-               public void log(Throwable t, Object ... msgs) {\r
-                       PrintStream out = System.err;\r
-                       out.print(Chrono.dateFmt.format(new Date()));\r
-                       out.print(": ");\r
-                       for(Object str : msgs) {\r
-                               out.print(str.toString());\r
-                               out.print(' ');\r
-                       }\r
-                       out.println();\r
-                       t.printStackTrace(out);\r
-               }\r
-\r
-               public boolean isLoggable() {\r
-                       return true;\r
-               }\r
-               @Override\r
-               public void printf(String fmt, Object ... vars) {\r
-                       log(String.format(fmt,vars));\r
-               }\r
-\r
-       };\r
-\r
+    public abstract void log(Object... msgs);\r
+    public abstract void log(Throwable e, Object ... msgs);\r
+    public abstract boolean isLoggable();\r
+    public abstract void printf(String fmt, Object ... vars);\r
+\r
+    // A Convenient LogTarget to insert when a NO-OP is desired.\r
+    public static final LogTarget NULL = new LogTarget() {\r
+        public void log(Object ... msgs) {\r
+        }\r
+\r
+        public void log(Throwable t, Object ... msgs) {\r
+        }\r
+\r
+        public boolean isLoggable() {\r
+            return false;\r
+        }\r
+\r
+        @Override\r
+        public void printf(String fmt, Object ... vars) {\r
+        }\r
+    };\r
+\r
+    // A Convenient LogTarget to write to the Console\r
+    public static final LogTarget SYSOUT = new StreamLogTarget(System.out,false);\r
+    \r
+    // A Convenient LogTarget to write to the Console\r
+    public static final LogTarget SYSERR = new StreamLogTarget(System.err,false);\r
+    \r
+    public static class StreamLogTarget implements LogTarget {\r
+       private final PrintStream out;\r
+               private final boolean closeMe;\r
+\r
+       public StreamLogTarget(PrintStream ps) {\r
+               this(ps,true);\r
+       }\r
+\r
+               /* Do NOT close SYSTEM ERR or OUT*/\r
+       protected StreamLogTarget(PrintStream ps, boolean shouldClose) {\r
+               out = ps;\r
+               closeMe = shouldClose;\r
+       }\r
+        public void log(Object ... msgs) {\r
+            out.print(Chrono.dateFmt.format(new Date()));\r
+            out.print(": ");\r
+            for (Object str : msgs) {\r
+                if (str!=null) {\r
+                    out.print(str.toString());\r
+                    out.print(' ');\r
+                } else {\r
+                    out.print("null ");\r
+                }\r
+            }\r
+            out.println();\r
+        }\r
+\r
+        public void log(Throwable t, Object ... msgs) {\r
+            out.print(Chrono.dateFmt.format(new Date()));\r
+            out.print(": ");\r
+            for (Object str : msgs) {\r
+                out.print(str.toString());\r
+                out.print(' ');\r
+            }\r
+            out.println();\r
+            t.printStackTrace(out);\r
+            out.println();\r
+        }\r
+\r
+        public boolean isLoggable() {\r
+            return true;\r
+        }\r
+\r
+        @Override\r
+        public void printf(String fmt, Object ... vars) {\r
+            log(String.format(fmt,vars));\r
+        }\r
+        \r
+        public void close() {\r
+               if(closeMe) {\r
+                       out.close();\r
+               }\r
+        }\r
+\r
+    }\r
 \r
 };
\ No newline at end of file