Skip to content

Commit

Permalink
Minor logging improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
gnodet committed Nov 4, 2016
1 parent a408dd3 commit 6285fdd
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/main/java/org/jline/reader/impl/LineReaderImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,7 @@ public void callWidget(String name) {
w.apply();
}
} catch (Throwable t) {
Log.debug("Error executing widget '" + name + "'", t);
Log.debug("Error executing widget '", name, "'", t);
}
}

Expand Down
12 changes: 6 additions & 6 deletions src/main/java/org/jline/terminal/TerminalBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,9 @@ public TerminalBuilder signalHandler(Terminal.SignalHandler signalHandler) {

public Terminal build() throws IOException {
Terminal terminal = doBuild();
Log.debug("Using terminal " + terminal.getClass().getSimpleName());
Log.debug(() -> "Using terminal " + terminal.getClass().getSimpleName());
if (terminal instanceof AbstractPosixTerminal) {
Log.debug("Using pty " + ((AbstractPosixTerminal) terminal).getPty().getClass().getSimpleName());
Log.debug(() -> "Using pty " + ((AbstractPosixTerminal) terminal).getPty().getClass().getSimpleName());
}
return terminal;
}
Expand Down Expand Up @@ -160,7 +160,7 @@ else if (OSUtils.IS_WINDOWS) {
try {
return new JnaWinSysTerminal(name, nativeSignals, signalHandler);
} catch (Throwable t) {
Log.debug("Error creating JNA based pty", t.getMessage());
Log.debug("Error creating JNA based pty: ", t.getMessage(), t);
}
}
return new JansiWinSysTerminal(name, nativeSignals, signalHandler);
Expand All @@ -171,15 +171,15 @@ else if (OSUtils.IS_WINDOWS) {
pty = JnaNativePty.current();
} catch (Throwable t) {
// ignore
Log.debug("Error creating JNA based pty", t.getMessage());
Log.debug("Error creating JNA based pty: ", t.getMessage(), t);
}
}
if (pty == null) {
try {
pty = ExecPty.current();
} catch (IOException e) {
// Ignore if not a tty
Log.debug("Error creating exec based pty", e.getMessage());
Log.debug("Error creating exec based pty: ", e.getMessage(), e);
}
}
if (pty != null) {
Expand All @@ -197,7 +197,7 @@ else if (OSUtils.IS_WINDOWS) {
Pty pty = JnaNativePty.open(attributes, size);
return new PosixPtyTerminal(name, type, pty, in, out, encoding, signalHandler);
} catch (Throwable t) {
Log.debug("Error creating JNA based pty", t.getMessage());
Log.debug("Error creating JNA based pty: ", t.getMessage(), t);
}
}
Terminal terminal = new ExternalTerminal(name, type, in, out, encoding, signalHandler);
Expand Down
29 changes: 26 additions & 3 deletions src/main/java/org/jline/utils/Log.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
Expand All @@ -27,6 +28,10 @@ public static void trace(final Object... messages) {
log(Level.FINEST, messages);
}

public static void debug(Supplier<String> supplier) {
log(Level.FINE, supplier);
}

public static void debug(final Object... messages) {
log(Level.FINE, messages);
}
Expand Down Expand Up @@ -64,8 +69,7 @@ static void render(final PrintStream out, final Object message) {
}
}

static void log(final Level level, final Object... messages) {
Logger logger = Logger.getLogger("org.jline");
static LogRecord createRecord(final Level level, final Object... messages) {
Throwable cause = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
Expand All @@ -81,7 +85,26 @@ static void log(final Level level, final Object... messages) {
ps.close();
LogRecord r = new LogRecord(level, baos.toString());
r.setThrown(cause);
logger.log(r);
return r;
}

static LogRecord createRecord(final Level level, final Supplier<String> message) {
return new LogRecord(level, message.get());
}

static void log(final Level level, final Supplier<String> message) {
logr(level, () -> createRecord(level, message));
}

static void log(final Level level, final Object... messages) {
logr(level, () -> createRecord(level, messages));
}

static void logr(final Level level, final Supplier<LogRecord> record) {
Logger logger = Logger.getLogger("org.jline");
if (logger.isLoggable(level)) {
logger.log(record.get());
}
}

}

0 comments on commit 6285fdd

Please sign in to comment.