Mercurial > hg > ccmiandroid
view src/uk/ac/qmul/eecs/ccmi/utilities/ILogger.java @ 1:66b3a838feca logging tip
Added logging of user interaction
author | Fiore Martin <fiore@eecs.qmul.ac.uk> |
---|---|
date | Tue, 12 Feb 2013 15:31:48 +0000 |
parents | |
children |
line wrap: on
line source
package uk.ac.qmul.eecs.ccmi.utilities; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.FileHandler; import java.util.logging.Formatter; import java.util.logging.LogRecord; import java.util.logging.Logger; import android.os.Environment; public class ILogger { private static final Logger LOGGER = Logger.getLogger(ILogger.class.getName()); private static final String LOG_PATH = "/Android/data/uk.ac.qmul.eecs.ccmi/files" ; private static final String LOG_FILE = "/interaction%u.txt" ; private static FileHandler fileHandler; public final static int CLICK_BACK = -1; private static void initHandler() throws IOException{ String state = Environment.getExternalStorageState(); if(!Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)){ throw new IOException("Could not find or write on SD Card"); } File logDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+LOG_PATH); if(!logDir.exists()){ if(!logDir.mkdirs()) throw new IOException("Could not create log file directory"); } fileHandler = new FileHandler(logDir.getAbsolutePath()+LOG_FILE,true); fileHandler.setFormatter(new InteractionLogFormatter()); LOGGER.addHandler(fileHandler); } public static void log(String message) { if(fileHandler == null){ try { initHandler(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } LOGGER.info(message+"\n"); } public static void logTap(CharSequence item){ log("user tap on: "+ item); } public static void logLongTap(CharSequence item){ log("user long tap on: "+item); } public static void logDialog(CharSequence dialog){ log("display dialog: "+dialog); } public static void logButton(CharSequence button){ log("user button press: "+button); } public static void logActivity(CharSequence activity){ log("display: "+activity); } public static void logError(String cause ){ log("error: "+cause); } public static void logHover(String text){ log("user hover: "+text); } public static void dispose(){ if(fileHandler != null){ fileHandler.close(); fileHandler = null; } } } class InteractionLogFormatter extends Formatter { private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("HH:mm:ss.SSS"); @Override public String format(LogRecord record) { return DATE_FORMAT.format(new Date(record.getMillis()))+','+record.getMessage(); } }