From 4308ce6347a542699e54132190878da203bfddae Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 11 Jan 2014 01:56:47 +0000 Subject: [PATCH] Fixed logging for BOB-one.jar --- apps/BOB/src/net/i2p/BOB/BOB.java | 87 +++++++++-------------- apps/BOB/src/net/i2p/BOB/DoCMDS.java | 7 +- apps/BOB/src/net/i2p/BOB/I2Plistener.java | 5 +- apps/BOB/src/net/i2p/BOB/MUXlisten.java | 4 +- apps/BOB/src/net/i2p/BOB/TCPlistener.java | 5 +- 5 files changed, 41 insertions(+), 67 deletions(-) diff --git a/apps/BOB/src/net/i2p/BOB/BOB.java b/apps/BOB/src/net/i2p/BOB/BOB.java index 602af6e461..a4e638b379 100644 --- a/apps/BOB/src/net/i2p/BOB/BOB.java +++ b/apps/BOB/src/net/i2p/BOB/BOB.java @@ -27,15 +27,17 @@ import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketTimeoutException; +import java.net.URL; import java.util.Arrays; import java.util.Properties; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.jar.Attributes; +import java.util.jar.Manifest; import net.i2p.I2PAppContext; import net.i2p.app.*; import net.i2p.client.I2PClient; import net.i2p.util.I2PAppThread; -import net.i2p.util.Log; import net.i2p.util.SimpleScheduler; import net.i2p.util.SimpleTimer2; @@ -129,7 +131,7 @@ public class BOB implements Runnable, ClientApp { // no longer used. // private static int maxConnections = 0; - private final Log _log; + private final Logger _log; private final ClientAppManager _mgr; private final String[] _args; private volatile ClientAppState _state = UNINITIALIZED; @@ -137,39 +139,6 @@ public class BOB implements Runnable, ClientApp { private volatile ServerSocket listener; private volatile Thread _runner; - /** - * Log a warning - * - * @param arg - * @deprecated - */ - public static void info(String arg) { - System.out.println("INFO:" + arg); - (new Log(BOB.class)).info(arg); - } - - /** - * Log a warning - * - * @param arg - * @deprecated - */ - public static void warn(String arg) { - System.out.println("WARNING:" + arg); - (new Log(BOB.class)).warn(arg); - } - - /** - * Log an error - * - * @param arg - * @deprecated - */ - public static void error(String arg) { - System.out.println("ERROR: " + arg); - (new Log(BOB.class)).error(arg); - } - /** * Stop BOB gracefully * @deprecated unused @@ -188,7 +157,23 @@ public class BOB implements Runnable, ClientApp { * @since 0.9.10 */ public BOB(I2PAppContext context, ClientAppManager mgr, String[] args) { - _log = context.logManager().getLog(BOB.class); + // If we were run from command line, log to stdout + boolean logToStdout = false; + String classPath = BOB.class.getResource("BOB.class").toString(); + if (classPath.startsWith("jar")) { + String manifestPath = classPath.substring(0, classPath.lastIndexOf("!") + 1) + + "/META-INF/MANIFEST.MF"; + try { + Manifest manifest = new Manifest(new URL(manifestPath).openStream()); + Attributes attrs = manifest.getMainAttributes(); + String mainClass = attrs.getValue("Main-Class"); + if ("net.i2p.BOB.Main".equals(mainClass)) + logToStdout = true; + } catch (IOException ioe) {} + } + + _log = new Logger(context.logManager().getLog(BOB.class), logToStdout); + _mgr = mgr; _args = args; _state = INITIALIZED; @@ -238,12 +223,10 @@ public class BOB implements Runnable, ClientApp { props.load(fi); fi.close(); } catch (FileNotFoundException fnfe) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Unable to load up the BOB config file " + cfg.getAbsolutePath() + ", Using defaults.", fnfe); + _log.warn("Unable to load up the BOB config file " + cfg.getAbsolutePath() + ", Using defaults.", fnfe); save = true; } catch (IOException ioe) { - if (_log.shouldLog(Log.WARN)) - _log.warn("IOException on BOB config file " + cfg.getAbsolutePath() + ", using defaults.", ioe); + _log.warn("IOException on BOB config file " + cfg.getAbsolutePath() + ", using defaults.", ioe); } } // Global router and client API configurations that are missing are set to defaults here. @@ -291,14 +274,12 @@ public class BOB implements Runnable, ClientApp { cfg = new File(I2PAppContext.getGlobalContext().getConfigDir(), configLocation); } try { - if (_log.shouldLog(Log.WARN)) - _log.warn("Writing new defaults file " + cfg.getAbsolutePath()); + _log.warn("Writing new defaults file " + cfg.getAbsolutePath()); FileOutputStream fo = new FileOutputStream(cfg); props.store(fo, cfg.getAbsolutePath()); fo.close(); } catch (IOException ioe) { - if (_log.shouldLog(Log.ERROR)) - _log.error("IOException on BOB config file " + cfg.getAbsolutePath(), ioe); + _log.error("IOException on BOB config file " + cfg.getAbsolutePath(), ioe); } } } @@ -326,8 +307,7 @@ public class BOB implements Runnable, ClientApp { public void run() { if (listener == null) return; changeState(RUNNING); - if (_log.shouldLog(Log.INFO)) - _log.info("BOB is now running."); + _log.info("BOB is now running."); if (_mgr != null) _mgr.register(this); @@ -360,14 +340,13 @@ public class BOB implements Runnable, ClientApp { } changeState(STOPPING); } catch (Exception e) { - if (spin.get() && _log.shouldLog(Log.ERROR)) + if (spin.get()) _log.error("Unexpected error while listening for connections", e); else e = null; changeState(STOPPING, e); } finally { - if (_log.shouldLog(Log.INFO)) - _log.info("BOB is now shutting down..."); + _log.info("BOB is now shutting down..."); // Clean up everything. try { listener.close(); @@ -399,8 +378,7 @@ public class BOB implements Runnable, ClientApp { } } changeState(STOPPED); - if (_log.shouldLog(Log.INFO)) - _log.info("BOB is now stopped."); + _log.info("BOB is now stopped."); } } @@ -466,10 +444,9 @@ public class BOB implements Runnable, ClientApp { try { startListener(); } catch (IOException e) { - if (_log.shouldLog(Log.ERROR)) - _log.error("Error starting BOB on" - + props.getProperty(PROP_BOB_HOST) - + ":" + props.getProperty(PROP_BOB_PORT), e); + _log.error("Error starting BOB on" + + props.getProperty(PROP_BOB_HOST) + + ":" + props.getProperty(PROP_BOB_PORT), e); changeState(START_FAILED, e); throw e; } diff --git a/apps/BOB/src/net/i2p/BOB/DoCMDS.java b/apps/BOB/src/net/i2p/BOB/DoCMDS.java index 4c2e2176ef..957f0ea3f1 100644 --- a/apps/BOB/src/net/i2p/BOB/DoCMDS.java +++ b/apps/BOB/src/net/i2p/BOB/DoCMDS.java @@ -31,7 +31,6 @@ import net.i2p.client.I2PClientFactory; //import net.i2p.data.DataFormatException; import net.i2p.data.Destination; //import net.i2p.i2ptunnel.I2PTunnel; -import net.i2p.util.Log; // needed only for debugging. // import java.util.logging.Level; // import java.util.logging.Logger; @@ -56,7 +55,7 @@ public class DoCMDS implements Runnable { private ByteArrayOutputStream prikey; private boolean dk, ns, ip, op; private NamedDB nickinfo; - private Log _log; + private Logger _log; private AtomicBoolean LIVE; private AtomicBoolean lock; /* database strings */ @@ -164,7 +163,7 @@ public class DoCMDS implements Runnable { * @param database * @param _log */ - DoCMDS(AtomicBoolean LIVE, AtomicBoolean lock, Socket server, Properties props, NamedDB database, Log _log) { + DoCMDS(AtomicBoolean LIVE, AtomicBoolean lock, Socket server, Properties props, NamedDB database, Logger _log) { this.lock = lock; this.LIVE = LIVE; this.server = server; @@ -606,7 +605,7 @@ public class DoCMDS implements Runnable { break die; } } catch (I2PException ipe) { - BOB.error("Error generating keys" + ipe); + _log.error("Error generating keys", ipe); out.println("ERROR generating keys"); } diff --git a/apps/BOB/src/net/i2p/BOB/I2Plistener.java b/apps/BOB/src/net/i2p/BOB/I2Plistener.java index 05b12fcd34..28c053a3ad 100644 --- a/apps/BOB/src/net/i2p/BOB/I2Plistener.java +++ b/apps/BOB/src/net/i2p/BOB/I2Plistener.java @@ -22,7 +22,6 @@ import net.i2p.I2PException; import net.i2p.client.streaming.I2PServerSocket; import net.i2p.client.streaming.I2PSocket; import net.i2p.client.streaming.I2PSocketManager; -import net.i2p.util.Log; /** * Listen on I2P and connect to TCP @@ -32,7 +31,7 @@ import net.i2p.util.Log; public class I2Plistener implements Runnable { private NamedDB info, database; - private Log _log; + private Logger _log; public I2PSocketManager socketManager; public I2PServerSocket serverSocket; private AtomicBoolean lives; @@ -45,7 +44,7 @@ public class I2Plistener implements Runnable { * @param database * @param _log */ - I2Plistener(I2PServerSocket SS, I2PSocketManager S, NamedDB info, NamedDB database, Log _log, AtomicBoolean lives) { + I2Plistener(I2PServerSocket SS, I2PSocketManager S, NamedDB info, NamedDB database, Logger _log, AtomicBoolean lives) { this.database = database; this.info = info; this._log = _log; diff --git a/apps/BOB/src/net/i2p/BOB/MUXlisten.java b/apps/BOB/src/net/i2p/BOB/MUXlisten.java index b8cae32ef3..a1530e104b 100644 --- a/apps/BOB/src/net/i2p/BOB/MUXlisten.java +++ b/apps/BOB/src/net/i2p/BOB/MUXlisten.java @@ -36,7 +36,7 @@ import net.i2p.util.Log; public class MUXlisten implements Runnable { private NamedDB database, info; - private Log _log; + private Logger _log; private I2PSocketManager socketManager; private ByteArrayInputStream prikey; private ThreadGroup tg; @@ -57,7 +57,7 @@ public class MUXlisten implements Runnable { * @throws net.i2p.I2PException * @throws java.io.IOException */ - MUXlisten(AtomicBoolean lock, NamedDB database, NamedDB info, Log _log) throws I2PException, IOException, RuntimeException { + MUXlisten(AtomicBoolean lock, NamedDB database, NamedDB info, Logger _log) throws I2PException, IOException, RuntimeException { try { int port = 0; InetAddress host = null; diff --git a/apps/BOB/src/net/i2p/BOB/TCPlistener.java b/apps/BOB/src/net/i2p/BOB/TCPlistener.java index 90fff59179..e5dd41d599 100644 --- a/apps/BOB/src/net/i2p/BOB/TCPlistener.java +++ b/apps/BOB/src/net/i2p/BOB/TCPlistener.java @@ -22,7 +22,6 @@ import java.net.SocketTimeoutException; import java.util.concurrent.atomic.AtomicBoolean; import net.i2p.client.streaming.I2PServerSocket; import net.i2p.client.streaming.I2PSocketManager; -import net.i2p.util.Log; /** * Listen on TCP port and connect to I2P @@ -32,7 +31,7 @@ import net.i2p.util.Log; public class TCPlistener implements Runnable { private NamedDB info, database; - private Log _log; + private Logger _log; public I2PSocketManager socketManager; public I2PServerSocket serverSocket; private ServerSocket listener; @@ -45,7 +44,7 @@ public class TCPlistener implements Runnable { * @param database * @param _log */ - TCPlistener(ServerSocket listener, I2PSocketManager S, NamedDB info, NamedDB database, Log _log, AtomicBoolean lives) { + TCPlistener(ServerSocket listener, I2PSocketManager S, NamedDB info, NamedDB database, Logger _log, AtomicBoolean lives) { this.database = database; this.info = info; this._log = _log;