log4jHandler maintainence

This commit is contained in:
huanghongxun
2018-02-23 11:22:20 +08:00
parent 53a8446f4a
commit 506c409303
2 changed files with 20 additions and 11 deletions

View File

@@ -79,14 +79,14 @@ public class MojangDownloadProvider implements DownloadProvider {
public String injectURL(String baseURL) {
if (baseURL == null)
return null;
else if (baseURL.contains("scala-swing") || baseURL.contains("scala-xml") || baseURL.contains("scala-parser-combinators"))
return baseURL.replace("http://files.minecraftforge.net/maven", "http://ftb.cursecdn.com/FTB2/maven/");
else if (baseURL.contains("typesafe") || baseURL.contains("scala"))
//else if (baseURL.contains("scala-swing") || baseURL.contains("scala-xml") || baseURL.contains("scala-parser-combinators"))
// return baseURL.replace("http://files.minecraftforge.net/maven", "http://ftb.cursecdn.com/FTB2/maven");
/*else if (baseURL.contains("typesafe") || baseURL.contains("scala"))
if (isChina)
return baseURL.replace("http://files.minecraftforge.net/maven", "http://maven.aliyun.com/nexus/content/groups/public");
else
return baseURL.replace("http://files.minecraftforge.net/maven", "http://repo1.maven.org/maven2");
else
*/else
return baseURL;
}
}

View File

@@ -56,6 +56,7 @@ final class Log4jHandler extends Thread {
private final PipedInputStream inputStream = Lang.invoke(() -> new PipedInputStream(outputStream));
private final AtomicBoolean interrupted = new AtomicBoolean(false);
private final List<String> logs = new LinkedList<>();
private boolean broken = false;
public Log4jHandler(BiConsumer<String, Log4jLevel> callback) {
this.callback = callback;
@@ -95,20 +96,28 @@ final class Log4jHandler extends Thread {
public Future<?> newLine(String log) {
return Schedulers.computation().schedule(() -> {
try {
String line = (log + OperatingSystem.LINE_SEPARATOR)
String line = log
.replace("<![CDATA[", "")
.replace("]]>", "")
.replace("log4j:Event", "log4j_Event")
.replace("<log4j:Message>", "<log4j_Message><![CDATA[")
.replace("</log4j:Message>", "]]></log4j_Message>")
.replace("log4j:Throwable", "log4j_Throwable");
.replace("log4j:", "log4j_")
.replace("<log4j_Message>", "<log4j_Message><![CDATA[")
.replace("</log4j_Message>", "]]></log4j_Message>")
.replace("<log4j_Throwable>", "<log4j_Throwable><![CDATA[")
.replace("</log4j_Throwable>", "]]></log4j_Throwable>");
logs.add(line);
byte[] bytes = line.getBytes(Charsets.UTF_8);
if (broken)
System.out.println(line);
byte[] bytes = (line + OperatingSystem.LINE_SEPARATOR).getBytes(Charsets.UTF_8);
outputStream.write(bytes);
outputStream.flush();
} catch (IOException e) {
// Ignoring IOException, including read end dead.
Logging.LOG.log(Level.WARNING, "An error occurred when writing console lines", e);
if (!broken) {
Logging.LOG.log(Level.WARNING, "An error occurred when writing console lines", e);
logs.forEach(System.out::println);
broken = true;
}
}
});
}