content: package btools.routingapp;
  
  import java.io.File;
  import java.io.FileWriter;
  import java.io.IOException;
  import java.io.PrintWriter;
  import java.io.StringWriter;
  import java.util.Date;
  
  import android.os.Environment;
  
  
  /**
   * static logger interface to be used in the android app
   */
  public class AppLogger {
    private static FileWriter debugLogWriter = null;
    private static boolean initDone = false;
  
    private static void init() {
      try {
        // open logfile if existing
        File sd = Environment.getExternalStorageDirectory();
        if (sd == null) return;
        File debugLog = new File(sd, "Android/media/btools.routingapp/brouter/brouterapp.txt");
        if (debugLog.exists()) {
          debugLogWriter = new FileWriter(debugLog, true);
        }
      } catch (IOException ioe) {
      }
    }
  
    /**
     * log an info trace to the app log file, if any
     */
    public static boolean isLogging() {
      if (!initDone) {
        initDone = true;
        init();
        log("logging started at " + new Date());
      }
      return debugLogWriter != null;
    }
  
    /**
     * log an info trace to the app log file, if any
     */
    public static void log(String msg) {
      if (isLogging()) {
        try {
          debugLogWriter.write(msg);
          debugLogWriter.write('\n');
          debugLogWriter.flush();
        } catch (IOException e) {
          throw new RuntimeException("cannot write brouterapp.txt: " + e);
        }
      }
    }
  
    /**
     * Format an exception using
     */
    public static String formatThrowable(Throwable t) {
      StringWriter sw = new StringWriter();
      PrintWriter pw = new PrintWriter(sw);
      t.printStackTrace(pw);
      return sw.toString();
    }
  
  }
  