From: <hu...@us...> - 2007-03-15 21:27:15
|
Revision: 376 http://svn.sourceforge.net/cishell/?rev=376&view=rev Author: huangb Date: 2007-03-15 14:27:08 -0700 (Thu, 15 Mar 2007) Log Message: ----------- initial version to write log records to files Added Paths: ----------- trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java Added: trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java (rev 0) +++ trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java 2007-03-15 21:27:08 UTC (rev 376) @@ -0,0 +1,129 @@ +package org.cishell.reference.gui.log; + +import java.io.File; + +import org.osgi.service.log.LogEntry; +import org.osgi.service.log.LogListener; +import org.osgi.service.log.LogService; + +import java.util.Calendar; +import java.util.logging.FileHandler; +import java.util.logging.Logger; +import java.util.logging.Level; +import java.util.logging.SimpleFormatter; +import java.io.IOException; + +/** + * This is a basic implementation. It write log records to files + * @author Weixia(Bonnie) Huang (hu...@in...) + */ +public class LogToFile implements LogListener { + //default log directory + private static String default_log_dir = + System.getProperty("user.dir") + + File.separator + "logs"; + private static String prefix_file_name = "user"; + + private File currentDir; + private Logger logger; + + //Specify the default size of each log file + private int limit = 100000; // 100 kb + + //Specify the default numbers of log files + private int max_Number_Of_LogFiles = 10; + + /** + * Constructor + */ + public LogToFile() { + + try { + // Create an appending file handler + currentDir = getLogDirectory(); + if (currentDir != null){ + boolean append = true; + String logFileName = currentDir+File.separator+ + generateUniqueFile(prefix_file_name)+ + ".%g.log"; + + FileHandler handler = new FileHandler(logFileName, + limit, max_Number_Of_LogFiles, append); + + handler.setFormatter(new SimpleFormatter()); + + // Add to the desired logger + logger = Logger.getLogger("edu.iu.iv.logger"); + logger.addHandler(handler); + } + } catch (IOException e) { + } + + } + + public void logged(final LogEntry entry) { + String message = entry.getMessage(); + + if (goodMessage(message)){ + logger.log(Level.INFO, message+"\n"); + } + } + + private boolean goodMessage(String msg) { + if (msg == null || + msg.startsWith("ServiceEvent ") || + msg.startsWith("BundleEvent ") || + msg.startsWith("FrameworkEvent ")) { + return false; + } else { + return true; + } + } + + private static File getLogDirectory(){ + //later, we should get the log directory from preference service + File logDir = new File(default_log_dir); + if (!logDir.exists() || !logDir.isDirectory()){ + try{ + if (logDir.mkdir()){ + return logDir; + } else { + return new File (default_log_dir); + } + }catch (Exception e){ + e.printStackTrace(); + return new File (default_log_dir); + } + + }else + return logDir; + + } + + /* + * create log file with given name plus unique timestamp + */ + private String generateUniqueFile(String prefixFN) { + + Calendar now = Calendar.getInstance(); + String month = (now.get(Calendar.MONTH) + 1) + ""; //zero based + + if (month.length() == 1) { + month = "0" + month; + } + + String day = now.get(Calendar.DAY_OF_MONTH) + ""; + + if (day.length() == 1) { + day = "0" + day; + } + + String year = now.get(Calendar.YEAR) + ""; + + String timestamp = "-" + month + "-" + day + "-" + year + "-"+ + System.currentTimeMillis(); + return prefixFN+timestamp; + + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ter...@us...> - 2007-05-09 13:49:28
|
Revision: 392 http://svn.sourceforge.net/cishell/?rev=392&view=rev Author: terkhorn Date: 2007-05-09 06:49:22 -0700 (Wed, 09 May 2007) Log Message: ----------- Fixed logging so that osgi Error levels are correctly mapped to java.util.logging error levels. Correspondence between OSGI log levels and Java.util.logging log levels: // JAVA OSGI // ---- ---- // SEVERE=1000 LOG_ERROR=1 // WARNING=900 LOG_WARNING=2 // INFO=800 LOG_INFO=3 // FINEST=300 LOG_DEBUG=4 Presumably this should take care of all cases for OSGI error levels, but if an invalid OSGI error level is given (I.E., outside of the range 1,2,3,4), the message is logged as "INFO." Felix Terkhorn (ter...@gm...) Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java Modified: trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java 2007-05-08 19:34:29 UTC (rev 391) +++ trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java 2007-05-09 13:49:22 UTC (rev 392) @@ -66,7 +66,7 @@ String message = entry.getMessage(); int osgiLogLevel = entry.getLevel(); Level javaLogLevel; - +/* // Correspondence between OSGI log levels and Java.util.logging log levels: // JAVA OSGI // ---- ---- @@ -74,7 +74,7 @@ // WARNING=900 LOG_WARNING=2 // INFO=800 LOG_INFO=3 // FINEST=300 LOG_DEBUG=4 - + */ if (osgiLogLevel == 1) { // OSGI level = LOG_ERROR javaLogLevel = Level.SEVERE; } else if (osgiLogLevel == 2) { // OSGI level = LOG_WARNING This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ter...@us...> - 2007-05-09 14:30:56
|
Revision: 393 http://svn.sourceforge.net/cishell/?rev=393&view=rev Author: terkhorn Date: 2007-05-09 07:30:55 -0700 (Wed, 09 May 2007) Log Message: ----------- Changed logger to call setUseParentHandlers(false). This will prevent logger output from being displayed to the stdout console and make life a tiny bit easier for our intrepid debuggers. Felix Terkhorn. (ter...@gm..., mas...@in...) Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java Modified: trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java 2007-05-09 13:49:22 UTC (rev 392) +++ trunk/clients/gui/org.cishell.reference.gui.log/src/org/cishell/reference/gui/log/LogToFile.java 2007-05-09 14:30:55 UTC (rev 393) @@ -55,6 +55,7 @@ // Add to the desired logger logger = Logger.getLogger("edu.iu.iv.logger"); logger.addHandler(handler); + logger.setUseParentHandlers(false); // Edited by Felix Terkhorn. ter...@gm... May-9-2007 } } catch (IOException e) { e.printStackTrace(); @@ -86,10 +87,10 @@ } else { // if these don't match, set it to INFO // maybe not the best way to do this javaLogLevel = Level.INFO; - } + } // edited by Felix Terkhorn. ter...@gm... May-9-2007 if (goodMessage(message)){ - logger.log(javaLogLevel, message+"\n"); + logger.log(javaLogLevel, message+"\n"); // stdout printing happens here, despite having 1 handler only } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |