|
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.
|