* 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
*\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