aboutsummaryrefslogtreecommitdiffstats
path: root/rba.tool.core/src/rba/tool/core/util/ToolLogger.java
diff options
context:
space:
mode:
Diffstat (limited to 'rba.tool.core/src/rba/tool/core/util/ToolLogger.java')
-rw-r--r--rba.tool.core/src/rba/tool/core/util/ToolLogger.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/rba.tool.core/src/rba/tool/core/util/ToolLogger.java b/rba.tool.core/src/rba/tool/core/util/ToolLogger.java
new file mode 100644
index 0000000..0907eb6
--- /dev/null
+++ b/rba.tool.core/src/rba/tool/core/util/ToolLogger.java
@@ -0,0 +1,79 @@
+package rba.tool.core.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.logging.FileHandler;
+import java.util.logging.Handler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.logging.SimpleFormatter;
+import java.util.stream.Stream;
+
+public class ToolLogger implements IToolLogger {
+
+ private Logger logger;
+
+ /**
+ * @param name logger name
+ * @param logFile File name
+ * @param append
+ * @throws SecurityException
+ * @throws IOException
+ */
+ public ToolLogger(String name, String logFile, boolean append) throws SecurityException, IOException {
+ this(Logger.getLogger(name), logFile, append);
+ }
+
+ /**
+ * @param logger logger name
+ * @param logFile
+ * @param append
+ * @throws SecurityException
+ * @throws IOException
+ * @throws NullPointerException
+ */
+ public ToolLogger(Logger logger, String logFile, boolean append) throws SecurityException, IOException {
+ if (logger == null) {
+ throw new NullPointerException("logger must be not null."); //$NON-NLS-1$
+ }
+ this.logger = logger;
+ String path = "log/" + logFile; //$NON-NLS-1$
+ createParent(path);
+ FileHandler h = new FileHandler(path, append);
+ h.setFormatter(new SimpleFormatter());
+ this.logger.addHandler(h);
+ this.logger.setLevel(Level.ALL);
+ }
+
+ public ToolLogger(Logger logger, Handler handler) {
+ if (logger == null) {
+ throw new NullPointerException("logger must be not null."); //$NON-NLS-1$
+ }
+ this.logger = logger;
+ this.logger.addHandler(handler);
+ this.logger.setLevel(Level.ALL);
+ }
+
+ static void createParent(String path) {
+ File logPath = new File(path);
+ if (!logPath.getParentFile().exists()) {
+ logPath.getParentFile().mkdirs();
+ }
+ }
+
+ /**
+ * Logging when handle to occurred error
+ * @param e
+ */
+ public void logging(Throwable e) {
+ StringBuilder message = new StringBuilder(e.toString() + "\n"); //$NON-NLS-1$
+ Stream.of(e.getStackTrace()).forEach(t -> message.append("\t").append(t.toString()).append("\n")); //$NON-NLS-1$ //$NON-NLS-2$
+ logger.warning(message.toString());
+ }
+
+ @Override
+ public void logging(String message) {
+ logger.warning(message);
+ }
+
+}