@@ -19,9 +19,7 @@ package org.jackhuang.hmcl.util;
|
||||
|
||||
import org.jackhuang.hmcl.util.io.IOUtils;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.text.MessageFormat;
|
||||
@@ -60,10 +58,11 @@ public final class Logging {
|
||||
LOG.setLevel(Level.ALL);
|
||||
LOG.setUseParentHandlers(false);
|
||||
LOG.setFilter(record -> {
|
||||
record.setMessage(filterForbiddenToken(record.getMessage()));
|
||||
record.setMessage(format(record));
|
||||
return true;
|
||||
});
|
||||
|
||||
DefaultFormatter formatter = new DefaultFormatter();
|
||||
try {
|
||||
if (Files.isRegularFile(logFolder))
|
||||
Files.delete(logFolder);
|
||||
@@ -71,7 +70,7 @@ public final class Logging {
|
||||
Files.createDirectories(logFolder);
|
||||
FileHandler fileHandler = new FileHandler(logFolder.resolve("hmcl.log").toAbsolutePath().toString());
|
||||
fileHandler.setLevel(Level.FINEST);
|
||||
fileHandler.setFormatter(DefaultFormatter.INSTANCE);
|
||||
fileHandler.setFormatter(formatter);
|
||||
fileHandler.setEncoding("UTF-8");
|
||||
LOG.addHandler(fileHandler);
|
||||
} catch (IOException e) {
|
||||
@@ -79,11 +78,11 @@ public final class Logging {
|
||||
}
|
||||
|
||||
ConsoleHandler consoleHandler = new ConsoleHandler();
|
||||
consoleHandler.setFormatter(DefaultFormatter.INSTANCE);
|
||||
consoleHandler.setFormatter(formatter);
|
||||
consoleHandler.setLevel(Level.FINER);
|
||||
LOG.addHandler(consoleHandler);
|
||||
|
||||
StreamHandler streamHandler = new StreamHandler(storedLogs, DefaultFormatter.INSTANCE) {
|
||||
StreamHandler streamHandler = new StreamHandler(storedLogs, formatter) {
|
||||
@Override
|
||||
public synchronized void publish(LogRecord record) {
|
||||
super.publish(record);
|
||||
@@ -104,7 +103,7 @@ public final class Logging {
|
||||
LOG.setUseParentHandlers(false);
|
||||
|
||||
ConsoleHandler consoleHandler = new ConsoleHandler();
|
||||
consoleHandler.setFormatter(DefaultFormatter.INSTANCE);
|
||||
consoleHandler.setFormatter(new DefaultFormatter());
|
||||
consoleHandler.setLevel(Level.FINER);
|
||||
LOG.addHandler(consoleHandler);
|
||||
}
|
||||
@@ -121,23 +120,41 @@ public final class Logging {
|
||||
}
|
||||
}
|
||||
|
||||
private static final class DefaultFormatter extends Formatter {
|
||||
private static final MessageFormat FORMAT = new MessageFormat("[{0,date,HH:mm:ss}] [{1}.{2}/{3}] {4}\n");
|
||||
|
||||
static final DefaultFormatter INSTANCE = new DefaultFormatter();
|
||||
private static final MessageFormat format = new MessageFormat("[{0,date,HH:mm:ss}] [{1}.{2}/{3}] {4}\n");
|
||||
private static String format(LogRecord record) {
|
||||
String message = filterForbiddenToken(record.getMessage());
|
||||
|
||||
@Override
|
||||
public String format(LogRecord record) {
|
||||
String log = format.format(new Object[]{
|
||||
new Date(record.getMillis()),
|
||||
record.getSourceClassName(), record.getSourceMethodName(), record.getLevel().getName(),
|
||||
record.getMessage()
|
||||
}, new StringBuffer(128), null).toString();
|
||||
if (record.getThrown() != null)
|
||||
log += StringUtils.getStackTrace(record.getThrown());
|
||||
Throwable thrown = record.getThrown();
|
||||
|
||||
return log;
|
||||
StringWriter writer;
|
||||
StringBuffer buffer;
|
||||
if (thrown == null) {
|
||||
writer = null;
|
||||
buffer = new StringBuffer(256);
|
||||
} else {
|
||||
writer = new StringWriter(1024);
|
||||
buffer = writer.getBuffer();
|
||||
}
|
||||
|
||||
FORMAT.format(new Object[]{
|
||||
new Date(record.getMillis()),
|
||||
record.getSourceClassName(), record.getSourceMethodName(), record.getLevel().getName(),
|
||||
message
|
||||
}, buffer, null);
|
||||
|
||||
if (thrown != null) {
|
||||
try (PrintWriter printWriter = new PrintWriter(writer)) {
|
||||
thrown.printStackTrace(printWriter);
|
||||
}
|
||||
}
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
private static final class DefaultFormatter extends Formatter {
|
||||
@Override
|
||||
public String format(LogRecord record) {
|
||||
return record.getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user