Logging additions 2 (#55)

* Add overload to logger.error() for Throwable to print stack trace

* Replaced all e.printStackTrace() with logger.error()

* Log level dependent on dev or release
This commit is contained in:
Banks T
2020-07-24 12:06:54 -04:00
committed by GitHub
parent 22d7ccc74d
commit 77fd6a84c8
17 changed files with 74 additions and 57 deletions

View File

@@ -18,6 +18,8 @@
package org.photonvision.common.logging;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousFileChannel;
import java.nio.file.Path;
@@ -33,6 +35,7 @@ import org.photonvision.common.dataflow.events.OutgoingUIEvent;
import org.photonvision.server.SocketHandler;
import org.photonvision.server.UIUpdateType;
@SuppressWarnings("unused")
public class Logger {
public static final String ANSI_RESET = "\u001B[0m";
@@ -85,8 +88,8 @@ public class Logger {
return builder.toString();
}
private static HashMap<LogGroup, LogLevel> levelMap = new HashMap<>();
private static List<LogAppender> currentAppenders = new ArrayList<>();
private static final HashMap<LogGroup, LogLevel> levelMap = new HashMap<>();
private static final List<LogAppender> currentAppenders = new ArrayList<>();
static {
levelMap.put(LogGroup.Camera, LogLevel.INFO);
@@ -101,6 +104,7 @@ public class Logger {
currentAppenders.add(new UILogAppender());
}
@SuppressWarnings("ResultOfMethodCallIgnored")
public static void addFileAppender(Path logFilePath) {
var file = logFilePath.toFile();
if (!file.exists()) {
@@ -151,6 +155,11 @@ public class Logger {
log(message, LogLevel.ERROR);
}
public void error(String message, Throwable t) {
log(message, LogLevel.ERROR);
log(convertStackTraceToString(t), LogLevel.ERROR);
}
public void warn(Supplier<String> messageSupplier) {
log(messageSupplier, LogLevel.WARN);
}
@@ -183,6 +192,16 @@ public class Logger {
log(message, LogLevel.TRACE);
}
private static String convertStackTraceToString(Throwable throwable) {
try (StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw)) {
throwable.printStackTrace(pw);
return sw.toString();
} catch (IOException ioe) {
throw new IllegalStateException(ioe);
}
}
private interface LogAppender {
void log(String message, LogLevel level);
}