Избавляемся от логирования
This commit is contained in:
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user