Archived
0

Избавляемся от логирования

This commit is contained in:
2015-09-11 15:55:07 +03:00
parent 9e4d4a045e
commit 61b671a1fb
3 changed files with 9 additions and 150 deletions

View File

@@ -1,79 +0,0 @@
package ru.dmitriymx.shell;
import java.io.File;
import java.util.logging.*;
public class LogAgent {
private Logger logger;
public LogAgent() {
this(new LogFormatter(), new ConsoleHandler(), null);
}
public LogAgent(Formatter formatter) {
this(formatter, new ConsoleHandler(), null);
}
public LogAgent(ConsoleHandler consoleHandler) {
this(new LogFormatter(), consoleHandler, null);
}
public LogAgent(File logFile) {
this(new LogFormatter(), new ConsoleHandler(), logFile);
}
public LogAgent(Formatter formatter, ConsoleHandler consoleHandler, File logFile) {
logger = Logger.getLogger("Shell");
logger.setUseParentHandlers(false);
Handler[] handlers = logger.getHandlers();
for (Handler handler : handlers) {
logger.removeHandler(handler);
}
consoleHandler.setFormatter(formatter);
logger.addHandler(consoleHandler);
if (logFile != null) {
try {
FileHandler fHandler = new FileHandler(logFile.getAbsolutePath(), true);
fHandler.setFormatter(formatter);
logger.addHandler(fHandler);
} catch (Exception e) {
logger.log(Level.WARNING, "Failed write log to " + logFile.getAbsolutePath(), e);
}
}
}
public void info(String message) {
logger.log(Level.INFO, message);
}
public void info(String message, Object... params) {
logger.log(Level.INFO, String.format(message, params));
}
public void warning(String message) {
logger.log(Level.WARNING, message);
}
public void warning(String message, Object... params) {
logger.log(Level.WARNING, String.format(message, params));
}
public void warning(String message, Throwable trow) {
logger.log(Level.WARNING, message, trow);
}
public void severe(String message) {
logger.log(Level.SEVERE, message);
}
public void severe(String message, Object... params) {
logger.log(Level.SEVERE, String.format(message, params));
}
public void severe(String message, Throwable trow) {
logger.log(Level.SEVERE, message, trow);
}
}

View File

@@ -1,28 +0,0 @@
package ru.dmitriymx.shell;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
public class LogFormatter extends Formatter {
private final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
@Override
public String format(LogRecord record) {
StringBuilder sb = new StringBuilder();
sb.append(SDF.format(record.getMillis()))
.append("[").append(record.getLevel().getName()).append("] ")
.append(record.getMessage()).append("\n");
Throwable thrown = record.getThrown();
if (thrown != null) {
StringWriter sw = new StringWriter();
thrown.printStackTrace(new PrintWriter(sw));
sb.append(sw.toString());
}
return sb.toString();
}
}

View File

@@ -2,16 +2,13 @@ package ru.dmitriymx.shell;
import jline.console.ConsoleReader; import jline.console.ConsoleReader;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.logging.Formatter;
/** /**
* Командная оболочка * Командная оболочка
*/ */
public class Shell implements Runnable { public class Shell implements Runnable {
private LogAgent log;
private Thread shellThread; private Thread shellThread;
private String prompt; private String prompt;
private LinkedList<IShellCommand> commandList = new LinkedList<>(); private LinkedList<IShellCommand> commandList = new LinkedList<>();
@@ -24,45 +21,8 @@ public class Shell implements Runnable {
* @throws IOException * @throws IOException
*/ */
public Shell() throws IOException { public Shell() throws IOException {
this(new LogFormatter(), null);
}
/**
* Создание командной оболочки
* @param logFile файл журналирования
* @throws IOException
*/
public Shell(File logFile) throws IOException {
this(new LogFormatter(), logFile);
}
/**
* Создание командной оболочки
* @param logFormatter свой вариант форматирования вывода
* @throws IOException
*/
public Shell(Formatter logFormatter) throws IOException {
this(logFormatter, null);
}
/**
* Создание командной оболочки
* @param logFormatter свой вариант форматирования вывода
* @param logFile файл журналирования
* @throws IOException
*/
public Shell(Formatter logFormatter, File logFile) throws IOException {
cReader = new ConsoleReader(System.in, System.out); cReader = new ConsoleReader(System.in, System.out);
cReader.setExpandEvents(false); cReader.setExpandEvents(false);
log = new LogAgent(logFormatter, new ShellConsoleHandler(this), logFile);
}
/**
* Получить объект журналирования
* @return
*/
public LogAgent getLog() {
return log;
} }
/** /**
@@ -118,7 +78,7 @@ public class Shell implements Runnable {
shellThread.join(); shellThread.join();
shellThread.start(); shellThread.start();
} catch (InterruptedException e) { } catch (InterruptedException e) {
log.severe("Shell thread exception: ", e); e.printStackTrace();
} }
} }
@@ -161,10 +121,16 @@ public class Shell implements Runnable {
continue readerLoop; continue readerLoop;
} }
} }
log.warning("Unknow command \"%s\"", commandName); System.err.println(String.format("Unknow command \"%s\"", commandName));
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
} }
} catch (IOException e) { } catch (IOException e) {
log.severe("Shell exception:", e); System.err.println("Shell exception");
e.printStackTrace();
} }
cReader.removeCompleter(commandCompleter); cReader.removeCompleter(commandCompleter);