[FEATURE] Изменена система выводов логгирования

This commit is contained in:
Gravit 2019-02-17 18:14:19 +07:00
parent ef1f7b0e76
commit ca0e8c0299
No known key found for this signature in database
GPG key ID: 061981E1E85D3216
5 changed files with 96 additions and 19 deletions

View file

@ -576,9 +576,9 @@ private void generateConfigIfNotExists() throws IOException {
newConfig.isWarningMissArchJava = true; newConfig.isWarningMissArchJava = true;
// Set server address // Set server address
LogHelper.println("LaunchServer address: "); System.out.println("LaunchServer address: ");
newConfig.setAddress(commandHandler.readLine()); newConfig.setAddress(commandHandler.readLine());
LogHelper.println("LaunchServer projectName: "); System.out.println("LaunchServer projectName: ");
newConfig.setProjectName(commandHandler.readLine()); newConfig.setProjectName(commandHandler.readLine());
// Write LaunchServer config // Write LaunchServer config

View file

@ -32,7 +32,7 @@ public JLineCommandHandler(LaunchServer server) throws IOException {
// Replace writer // Replace writer
LogHelper.removeStdOutput(); LogHelper.removeStdOutput();
LogHelper.addOutput(new JLineOutput()); LogHelper.addOutput(new JLineOutput(), LogHelper.OutputTypes.JANSI);
} }
@Override @Override

View file

@ -30,7 +30,7 @@ public void reply() throws Exception {
LogHelper.error(e); LogHelper.error(e);
} }
}; };
LogHelper.addOutput(loutput); LogHelper.addOutput(loutput, LogHelper.OutputTypes.PLAIN);
try { try {
server.commandHandler.eval(cmd, false); server.commandHandler.eval(cmd, false);
output.writeBoolean(false); output.writeBoolean(false);

View file

@ -9,6 +9,7 @@
import ru.gravit.utils.helper.LogHelper; import ru.gravit.utils.helper.LogHelper;
public class AddLogListenerResponse implements JsonResponseInterface { public class AddLogListenerResponse implements JsonResponseInterface {
public LogHelper.OutputTypes outputType = LogHelper.OutputTypes.PLAIN;
@Override @Override
public String getType() { public String getType() {
return "addLogListener"; return "addLogListener";
@ -43,7 +44,7 @@ public void execute(WebSocketService service, ChannelHandlerContext ctx, Client
} }
}; };
client.logOutput = output; client.logOutput = output;
LogHelper.addOutput(output); LogHelper.addOutput(output, outputType);
} }
} }
} }

View file

@ -35,21 +35,39 @@ public final class LogHelper {
private static final AtomicBoolean DEBUG_ENABLED = new AtomicBoolean(Boolean.getBoolean(DEBUG_PROPERTY)); private static final AtomicBoolean DEBUG_ENABLED = new AtomicBoolean(Boolean.getBoolean(DEBUG_PROPERTY));
private static final AtomicBoolean STACKTRACE_ENABLED = new AtomicBoolean(Boolean.getBoolean(STACKTRACE_PROPERTY)); private static final AtomicBoolean STACKTRACE_ENABLED = new AtomicBoolean(Boolean.getBoolean(STACKTRACE_PROPERTY));
private static final AtomicBoolean DEV_ENABLED = new AtomicBoolean(Boolean.getBoolean(DEV_PROPERTY)); private static final AtomicBoolean DEV_ENABLED = new AtomicBoolean(Boolean.getBoolean(DEV_PROPERTY));
private static final Set<Output> OUTPUTS = Collections.newSetFromMap(new ConcurrentHashMap<>(2)); public static class OutputEnity
{
public Output output;
public OutputTypes type;
public OutputEnity(Output output, OutputTypes type) {
this.output = output;
this.type = type;
}
}
public enum OutputTypes
{
PLAIN, JANSI, HTML
}
private static final Set<OutputEnity> OUTPUTS = Collections.newSetFromMap(new ConcurrentHashMap<>(2));
private static final Output STD_OUTPUT; private static final Output STD_OUTPUT;
private LogHelper() { private LogHelper() {
} }
@LauncherAPI @LauncherAPI
public static void addOutput(Output output) { public static void addOutput(OutputEnity output) {
OUTPUTS.add(Objects.requireNonNull(output, "output")); OUTPUTS.add(Objects.requireNonNull(output, "output"));
} }
@LauncherAPI
public static void addOutput(Output output, OutputTypes type) {
OUTPUTS.add(new OutputEnity(Objects.requireNonNull(output, "output"),type));
}
@LauncherAPI @LauncherAPI
public static void addOutput(Path file) throws IOException { public static void addOutput(Path file) throws IOException {
if (JANSI) { if (JANSI) {
addOutput(new JAnsiOutput(IOHelper.newOutput(file, true))); addOutput(new JAnsiOutput(IOHelper.newOutput(file, true)),OutputTypes.JANSI);
} else { } else {
addOutput(IOHelper.newWriter(file, true)); addOutput(IOHelper.newWriter(file, true));
} }
@ -57,7 +75,7 @@ public static void addOutput(Path file) throws IOException {
@LauncherAPI @LauncherAPI
public static void addOutput(Writer writer) { public static void addOutput(Writer writer) {
addOutput(new WriterOutput(writer)); addOutput(new WriterOutput(writer), OutputTypes.PLAIN);
} }
@LauncherAPI @LauncherAPI
@ -142,24 +160,82 @@ public static void setDevEnabled(boolean stacktraceEnabled) {
@LauncherAPI @LauncherAPI
public static void log(Level level, String message, boolean sub) { public static void log(Level level, String message, boolean sub) {
String dateTime = DATE_TIME_FORMATTER.format(LocalDateTime.now()); String dateTime = DATE_TIME_FORMATTER.format(LocalDateTime.now());
println(JANSI ? ansiFormatLog(level, dateTime, message, sub) : String jansiString = null, plainString = null;
formatLog(level, message, dateTime, sub)); for (OutputEnity output : OUTPUTS) {
if(output.type == OutputTypes.JANSI && JANSI)
{
if(jansiString != null){
output.output.println(jansiString);
continue;
}
jansiString = ansiFormatLog(level, dateTime, message, sub);
output.output.println(jansiString);
}
else
{
if(plainString != null){
output.output.println(plainString);
continue;
}
plainString = formatLog(level, message, dateTime, sub);
output.output.println(plainString);
}
}
} }
@LauncherAPI @LauncherAPI
public static void printVersion(String product) { public static void printVersion(String product) {
println(JANSI ? ansiFormatVersion(product) : formatVersion(product)); String jansiString = null, plainString = null;
for (OutputEnity output : OUTPUTS) {
if(output.type == OutputTypes.JANSI && JANSI)
{
if(jansiString != null){
output.output.println(jansiString);
continue;
}
jansiString = ansiFormatVersion(product);
output.output.println(jansiString);
}
else
{
if(plainString != null){
output.output.println(plainString);
continue;
}
plainString = formatVersion(product);
output.output.println(plainString);
}
}
} }
@LauncherAPI @LauncherAPI
public static void printLicense(String product) { public static void printLicense(String product) {
println(JANSI ? ansiFormatLicense(product) : formatLicense(product)); String jansiString = null, plainString = null;
} for (OutputEnity output : OUTPUTS) {
if(output.type == OutputTypes.JANSI && JANSI)
{
if(jansiString != null){
output.output.println(jansiString);
continue;
}
@LauncherAPI jansiString = ansiFormatLicense(product);
public static synchronized void println(String message) { output.output.println(jansiString);
for (Output output : OUTPUTS) { }
output.println(message); else
{
if(plainString != null){
output.output.println(plainString);
continue;
}
plainString = formatLicense(product);
output.output.println(plainString);
}
} }
} }
@ -322,7 +398,7 @@ private static String formatLicense(String product) {
// Add std writer // Add std writer
STD_OUTPUT = System.out::println; STD_OUTPUT = System.out::println;
addOutput(STD_OUTPUT); addOutput(STD_OUTPUT, JANSI ? OutputTypes.JANSI : OutputTypes.PLAIN);
// Add file log writer // Add file log writer
String logFile = System.getProperty("launcher.logFile"); String logFile = System.getProperty("launcher.logFile");