- plugin functionality added

- Logging adapted to use the .configure property file

git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@178 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c
This commit is contained in:
schlaepfer
2006-10-20 15:00:56 +00:00
parent 36c42b4f2c
commit b97aba3961
12 changed files with 110 additions and 74 deletions

View File

@@ -1,9 +1,9 @@
package ch.ntb.usb;
import java.util.logging.Level;
import java.util.logging.Logger;
import ch.ntb.usb.logger.LogUtil;
import ch.ntb.usb.logger.UsbLogger;
/**
* This class represents an USB device.<br>
@@ -14,7 +14,7 @@ import ch.ntb.usb.logger.UsbLogger;
*/
public class Device {
private static UsbLogger logger = LogUtil.ch_ntb_usb;
private static Logger logger = LogUtil.getLogger("ch.ntb.usb");
private static final int TIMEOUT_ERROR_CODE = -116;
@@ -224,7 +224,8 @@ public class Device {
+ LibusbWin.usb_strerror());
}
if (logger.getLevel().intValue() <= Level.INFO.intValue()) {
logger.info("length written: " + lenWritten);
if (logger.getLevel().intValue() <= Level.FINEST.intValue()) {
StringBuffer sb = new StringBuffer("bulkwrite, ep 0x"
+ Integer.toHexString(out_ep_address) + ": " + lenWritten
+ " Bytes sent: ");
@@ -283,7 +284,8 @@ public class Device {
+ LibusbWin.usb_strerror());
}
if (logger.getLevel().intValue() <= Level.INFO.intValue()) {
logger.info("length read: " + lenRead);
if (logger.getLevel().intValue() <= Level.FINEST.intValue()) {
StringBuffer sb = new StringBuffer("bulkread, ep 0x"
+ Integer.toHexString(in_ep_address) + ": " + lenRead
+ " Bytes received: ");
@@ -343,7 +345,8 @@ public class Device {
+ LibusbWin.usb_strerror());
}
if (logger.getLevel().intValue() <= Level.INFO.intValue()) {
logger.info("length written: " + lenWritten);
if (logger.getLevel().intValue() <= Level.FINEST.intValue()) {
StringBuffer sb = new StringBuffer("bulkwrite, ep 0x"
+ Integer.toHexString(out_ep_address) + ": " + lenWritten
+ " Bytes sent: ");
@@ -403,7 +406,8 @@ public class Device {
+ LibusbWin.usb_strerror());
}
if (logger.getLevel().intValue() <= Level.INFO.intValue()) {
logger.info("length read: " + lenRead);
if (logger.getLevel().intValue() <= Level.FINEST.intValue()) {
StringBuffer sb = new StringBuffer("bulkread, ep 0x"
+ Integer.toHexString(in_ep_address) + ": " + lenRead
+ " Bytes received: ");

View File

@@ -2,9 +2,9 @@ package ch.ntb.usb;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.logging.Logger;
import ch.ntb.usb.logger.LogUtil;
import ch.ntb.usb.logger.UsbLogger;
/**
* This class manages all USB devices and defines some USB specific constants.<br>
@@ -26,7 +26,7 @@ public class USB {
*/
public static int FULLSPEED_MAX_BULK_PACKET_SIZE = 64;
private static UsbLogger logger = LogUtil.ch_ntb_usb;
private static Logger logger = LogUtil.getLogger("ch.ntb.usb");
private static LinkedList<Device> devices = new LinkedList<Device>();

View File

@@ -1,15 +0,0 @@
package ch.ntb.usb.logger;
import java.util.logging.Level;
public class LogLevel extends Level {
private static final long serialVersionUID = -8918592094095458645L;
public static final Level DEBUG = new LogLevel("DEBUG", 750);
protected LogLevel(String name, int value) {
super(name, value);
}
}

View File

@@ -1,20 +1,25 @@
package ch.ntb.usb.logger;
import java.io.FileInputStream;
import java.util.Properties;
import java.util.logging.ConsoleHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
public class LogUtil {
public static UsbLogger ch_ntb_usb, ch_ntb_usb_test;
private static final String PLUGIN_ID = "ch.ntb.usb";
private static final String PROPERTIES_FILE = ".configure";
private static boolean debugEnabled;
static {
// set all loglevels here
ch_ntb_usb = getLogger("ch.ntb.usb", Level.OFF);
ch_ntb_usb_test = getLogger("ch.ntb.usb.test", Level.ALL);
createLoggersFromProperties();
}
public static void setLevel(UsbLogger logger, Level loglevel) {
public static void setLevel(Logger logger, Level loglevel) {
Handler[] h = logger.getHandlers();
for (int i = 0; i < h.length; i++) {
h[i].setLevel(loglevel);
@@ -22,7 +27,19 @@ public class LogUtil {
logger.setLevel(loglevel);
}
private static void initLevel(UsbLogger logger, Level loglevel) {
public static Logger getLogger(String name) {
LogManager manager = LogManager.getLogManager();
// check if logger is already registered
Logger logger = manager.getLogger(name);
if (logger == null) {
logger = Logger.getLogger(name);
manager.addLogger(logger);
}
logger.setLevel(null);
return logger;
}
private static void initLevel(Logger logger, Level loglevel) {
Handler[] h = logger.getHandlers();
for (int i = 0; i < h.length; i++) {
logger.removeHandler(h[i]);
@@ -34,9 +51,43 @@ public class LogUtil {
logger.setUseParentHandlers(false);
}
private static UsbLogger getLogger(String name, Level loglevel) {
UsbLogger logger = UsbLogger.getLogger(name);
initLevel(logger, loglevel);
return logger;
private static void createLoggersFromProperties() {
try {
FileInputStream fis = new FileInputStream(PROPERTIES_FILE);
Properties prop = new Properties();
prop.load(fis);
// get global debug enable flag
debugEnabled = Boolean.parseBoolean(prop.getProperty(PLUGIN_ID
+ "/debug"));
// get and configure loggers
boolean moreLoggers = true;
int loggerCount = 0;
while (moreLoggers) {
String loggerProp = prop.getProperty(PLUGIN_ID
+ "/debug/logger" + loggerCount);
loggerCount++;
if (loggerProp != null) {
// parse string and get logger name and log level
int slashIndex = loggerProp.indexOf('/');
String loggerName = loggerProp.substring(0, slashIndex)
.trim();
String logLevel = loggerProp.substring(slashIndex + 1,
loggerProp.length());
// register logger
Level level;
if (debugEnabled) {
level = Level.parse(logLevel);
} else {
level = Level.OFF;
}
Logger logger = getLogger(loggerName);
initLevel(logger, level);
} else {
moreLoggers = false;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -1,27 +0,0 @@
package ch.ntb.usb.logger;
import java.util.logging.LogManager;
import java.util.logging.Logger;
public class UsbLogger extends Logger {
protected UsbLogger(String name, String resourceBundleName) {
super(name, resourceBundleName);
}
public void debug(String msg) {
log(LogLevel.DEBUG, msg);
}
public static synchronized UsbLogger getLogger(String name) {
LogManager manager = LogManager.getLogManager();
UsbLogger result = (UsbLogger) manager.getLogger(name);
if (result == null) {
result = new UsbLogger(name, null);
manager.addLogger(result);
result = (UsbLogger) manager.getLogger(name);
}
result.setLevel(null);
return result;
}
}

View File

@@ -10,7 +10,7 @@ import ch.ntb.usb.logger.LogUtil;
public class TestImplementation {
private static Logger logger = LogUtil.ch_ntb_usb_test;
private static Logger logger = LogUtil.getLogger("ch.ntb.usb.test");
public static String sendData = "0x5b 0x02 0x01 0x00 0x03 0x03 0xf0 0xf0 0x1f";