package oculusPrime.commport; import java.io.File; import java.io.RandomAccessFile; import java.util.Date; import java.util.Vector; import oculusPrime.Util; public class PowerLogger { public final static String sep = System.getProperty("file.separator"); public final static String redhome = System.getenv("RED5_HOME"); public final static String powerlog = redhome + sep + "log" + sep + "power.log"; public static final long ROLLOVER = 250000000; private static final int MAX_HISTORY = 50; private static RandomAccessFile logger = null; private static Vector<String> history = new Vector<String>(); private static void init() { File logfile = new File(powerlog); if (logfile.exists()) { if (logfile.length() > ROLLOVER) { Util.debug("file too large, rolling over: " + powerlog); logfile.delete(); } } try { logger = new RandomAccessFile(powerlog, "rw"); } catch (Exception e) { Util.debug("PowerLogger(): " + e.getMessage()); } } public static void append(String msg, Object c) { String data = c.getClass().getName().toLowerCase() + ", " + msg; try { if(logger == null) init(); logger.seek(logger.length()); logger.writeBytes(new Date().toString() + ", " + data + "\r\n"); if(history.size() > MAX_HISTORY) history.remove(0); history.add(msg); // data); } catch (Exception e) { Util.debug("PowerLogger.append(): " + e.getMessage() + " " + data); } } public static String tail(int lines){ int i = 0; StringBuffer str = new StringBuffer(); if(history.size() > lines) i = history.size() - lines; for(; i < history.size() ; i++) str.append(history.get(i) + "\n<br>"); return str.toString(); } public static void close() { try { logger.close(); logger = null; } catch (Exception e) { Util.debug("PowerLogger.close(): " + e.getMessage()); } } }