Fixed logging for BOB-one.jar

This commit is contained in:
str4d
2014-01-11 01:56:47 +00:00
parent 32b095efbd
commit 4308ce6347
5 changed files with 41 additions and 67 deletions

View File

@@ -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;
}

View File

@@ -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");
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;