diff --git a/src/main/java/mpo/dayon/common/log/Log.java b/src/main/java/mpo/dayon/common/log/Log.java index d64633bc..1d59a7b6 100644 --- a/src/main/java/mpo/dayon/common/log/Log.java +++ b/src/main/java/mpo/dayon/common/log/Log.java @@ -18,26 +18,24 @@ public final class Log { private static final boolean DEBUG = System.getProperty("dayon.debug") != null; - private static LogAppender out; + private static final LogAppender out; private Log() { } static { - final String mode = System.getProperty("dayon.log", "console"); - out = new ConsoleAppender(); - - if ("file".equals(mode)) { - try { - final File logFile = getOrCreateLogFile(); - // console ... - info("Log logFile : " + logFile.getAbsolutePath()); - // logFile ...ยง - out = new FileAppender(logFile.getAbsolutePath()); - } catch (IOException ex) { - // console ... - warn("Log file setup error (fallback to console)!", ex); - } + String mode = System.getProperty("dayon.log", "console"); + out = mode.equals("file") ? createFileAppender() : new ConsoleAppender(); + } + + private static LogAppender createFileAppender() { + try { + File logFile = getOrCreateLogFile(); + info("Log logFile : " + logFile.getAbsolutePath()); + return new FileAppender(logFile.getAbsolutePath()); + } catch (IOException ex) { + warn("Log file setup error (fallback to console)!", ex); + return new ConsoleAppender(); } } diff --git a/src/main/java/mpo/dayon/common/log/file/FileAppender.java b/src/main/java/mpo/dayon/common/log/file/FileAppender.java index 5d7e26a9..32855633 100644 --- a/src/main/java/mpo/dayon/common/log/file/FileAppender.java +++ b/src/main/java/mpo/dayon/common/log/file/FileAppender.java @@ -38,24 +38,21 @@ public FileAppender(String filename) throws FileNotFoundException { @Override public synchronized void append(LogLevel level, String message, Throwable error) { try { - final String info = format(level, message); - - writer.println(info); - writer.flush(); - - count += info.length(); + StringBuilder builder = new StringBuilder(); + builder.append(format(level, message)).append(System.lineSeparator()); + count += message.length(); if (error != null) { - final String stack = getStackTrace(error); - writer.println(stack); - writer.flush(); - - count += stack.length(); + builder.append(getStackTrace(error)).append(System.lineSeparator()); + count += getStackTrace(error).length(); } if (count >= MAX_FILE_SIZE && count >= nextRolloverCount) { rollOver(); } + + writer.write(builder.toString()); + writer.flush(); } catch (RuntimeException ex) { fallback.append(level, message, error); fallback.append(LogLevel.WARN, "[FileAppender] error", ex);