Add a filter policy to logs

This commit is contained in:
Glavo 2022-03-19 18:45:34 +08:00 committed by Yuhui Huang
parent 03c634658b
commit 151e7e04eb

View File

@ -26,6 +26,9 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.text.MessageFormat;
import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.logging.*;
/**
@ -38,9 +41,26 @@ public final class Logging {
public static final Logger LOG = Logger.getLogger("HMCL");
private static final ByteArrayOutputStream storedLogs = new ByteArrayOutputStream(IOUtils.DEFAULT_BUFFER_SIZE);
private static final ConcurrentMap<String, String> forbiddenTokens = new ConcurrentHashMap<>();
public static void registerForbiddenToken(String token, String replacement) {
forbiddenTokens.put(token, replacement);
}
public static String filterForbiddenToken(String message) {
for (Map.Entry<String, String> entry : forbiddenTokens.entrySet()) {
message = message.replace(entry.getKey(), entry.getValue());
}
return message;
}
public static void start(Path logFolder) {
LOG.setLevel(Level.ALL);
LOG.setUseParentHandlers(false);
LOG.setFilter(record -> {
record.setMessage(filterForbiddenToken(record.getMessage()));
return true;
});
try {
Files.createDirectories(logFolder);