From 07b86b12306f0cb6c6002862665e8a601636d72e Mon Sep 17 00:00:00 2001 From: Dinnerbone Date: Sat, 26 Feb 2011 11:29:37 +0000 Subject: [PATCH] Added command line option 'date-format' to control how dates are printed to console (not to log) --- .../minecraft/server/ConsoleLogManager.java | 7 +++-- .../net/minecraft/server/MinecraftServer.java | 2 +- .../java/org/bukkit/craftbukkit/Main.java | 8 ++++++ .../util/ShortConsoleLogFormatter.java | 28 ++++++++++++++++++- 4 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/minecraft/server/ConsoleLogManager.java b/src/main/java/net/minecraft/server/ConsoleLogManager.java index 641c8ca71a..53308077ce 100644 --- a/src/main/java/net/minecraft/server/ConsoleLogManager.java +++ b/src/main/java/net/minecraft/server/ConsoleLogManager.java @@ -1,5 +1,6 @@ package net.minecraft.server; +import java.text.SimpleDateFormat; import java.util.logging.ConsoleHandler; import java.util.logging.FileHandler; import java.util.logging.Level; @@ -18,11 +19,11 @@ public class ConsoleLogManager { public ConsoleLogManager() {} // Craftbukkit - change of method signature! - public static void a(ConsoleReader reader) { + public static void a(MinecraftServer server) { ConsoleLogFormatter consolelogformatter = new ConsoleLogFormatter(); a.setUseParentHandlers(false); - ConsoleHandler consolehandler = new TerminalConsoleHandler(reader); + ConsoleHandler consolehandler = new TerminalConsoleHandler(server.reader); // Craftbukkit // CraftBukkit start for (Handler handler: global.getHandlers()) { @@ -30,7 +31,7 @@ public class ConsoleLogManager { } // CraftBukkit end - consolehandler.setFormatter(new ShortConsoleLogFormatter()); // Craftbukkit + consolehandler.setFormatter(new ShortConsoleLogFormatter(server)); // Craftbukkit a.addHandler(consolehandler); global.addHandler(consolehandler); // CraftBukkit diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index b9e6ff0b0e..8127ac0316 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -75,7 +75,7 @@ public class MinecraftServer implements Runnable, ICommandListener { threadcommandreader.setDaemon(true); threadcommandreader.start(); - ConsoleLogManager.a(reader); // Craftbukkit + ConsoleLogManager.a(this); // Craftbukkit // CraftBukkit start System.setOut(new PrintStream(new LoggerOutputStream(a, Level.INFO), true)); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java index 2d75096f76..7522fbfc44 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -2,6 +2,9 @@ package org.bukkit.craftbukkit; import java.io.File; import java.io.IOException; +import java.text.DateFormat; +import java.text.Format; +import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.List; import java.util.logging.Level; @@ -53,6 +56,11 @@ public class Main { .withRequiredArg() .ofType(Integer.class) .describedAs("Server size"); + + acceptsAll(asList("d", "date-format"), "Format of the date to display in the console (for log entries)") + .withRequiredArg() + .ofType(SimpleDateFormat.class) + .describedAs("Log date format"); } }; diff --git a/src/main/java/org/bukkit/craftbukkit/util/ShortConsoleLogFormatter.java b/src/main/java/org/bukkit/craftbukkit/util/ShortConsoleLogFormatter.java index ad4419f9aa..404cf32dfe 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/ShortConsoleLogFormatter.java +++ b/src/main/java/org/bukkit/craftbukkit/util/ShortConsoleLogFormatter.java @@ -5,9 +5,35 @@ import java.io.StringWriter; import java.text.SimpleDateFormat; import java.util.logging.Formatter; import java.util.logging.LogRecord; +import joptsimple.OptionException; +import joptsimple.OptionSet; +import net.minecraft.server.MinecraftServer; public class ShortConsoleLogFormatter extends Formatter { - private final SimpleDateFormat date = new SimpleDateFormat("HH:mm:ss"); + private final SimpleDateFormat date; + + public ShortConsoleLogFormatter(MinecraftServer server) { + OptionSet options = server.options; + SimpleDateFormat date = null; + + if (options.has("date-format")) { + try { + Object object = options.valueOf("date-format"); + + if ((object != null) && (object instanceof SimpleDateFormat)) { + date = (SimpleDateFormat)object; + } + } catch (OptionException ex) { + System.err.println("Given date format is not valid. Falling back to default."); + } finally { + if (date == null) { + date = new SimpleDateFormat("HH:mm:ss"); + } + } + } + + this.date = date; + } @Override public String format(LogRecord record) {