/* * Copyright (C) 2015 Actor LLC. <https://actor.im> */ package im.actor.runtime.android; import android.content.Context; import android.content.SharedPreferences; import android.os.Environment; import android.util.Log; import com.squareup.okhttp.Callback; import com.squareup.okhttp.MediaType; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.RequestBody; import com.squareup.okhttp.Response; import java.io.IOException; import java.util.logging.FileHandler; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.SimpleFormatter; import im.actor.runtime.LogRuntime; import im.actor.runtime.json.JSONException; import im.actor.runtime.json.JSONObject; public class AndroidLogProvider implements LogRuntime { // public static final int SEND_LOGS_EXPIRES = 1000 * 60 * 60 * 3; // private static FileHandler fileHandler; // private static boolean writeLogs; // private static boolean sendLogs; // private static long sendLogsTime; // private static String sendLogsUrl = null; // private static SharedPreferences shp; // private static final OkHttpClient client; // static { // String name; // shp = AndroidContext.getContext().getSharedPreferences("log_props.ini", Context.MODE_PRIVATE); // sendLogs = shp.getBoolean("sendLogs", false); // sendLogsTime = shp.getLong("sendLogsTime", 0); // sendLogsUrl = shp.getString("sendLogsUrl", null); // writeLogs = shp.getBoolean("writeLogs", false); // if (0 == Environment.getExternalStorageState().compareTo(Environment.MEDIA_MOUNTED)) { // name = Environment.getExternalStorageDirectory().getAbsolutePath(); // } else { // name = Environment.getDataDirectory().getAbsolutePath(); // } // // name += "/actorlogs%g_%u.log"; // // try { // fileHandler = new FileHandler(name, 256 * 1024, 10, true); // } catch (IOException e) { // e.printStackTrace(); // } // // client = new OkHttpClient(); // } @Override public void w(String tag, String message) { Log.w(tag, message); // writeToFile(Level.WARNING, tag, message); // sendLogs("w", tag, message); } @Override public void e(String tag, Throwable throwable) { Log.e(tag, "", throwable); // writeToFile(Level.WARNING, tag, throwable.getMessage()); // sendLogs("e", tag, throwable.getMessage()); } @Override public void d(String tag, String message) { Log.d(tag, message); // writeToFile(Level.INFO, tag, message); // sendLogs("d", tag, message); } @Override public void v(String tag, String message) { Log.v(tag, message); // writeToFile(Level.ALL, tag, message); // sendLogs("v", tag, message); } // private static int i = 0; // private static String s = ""; // // private static void sendLogs(String level, String tag, String msg) { // if (sendLogs && sendLogsUrl != null) { // if (i == 0) { // s = s.concat("```"); // } // // s = s.concat("\n").concat(level).concat(" ").concat(tag).concat(":").concat(msg); // // if (i == 19) { // if (System.currentTimeMillis() - sendLogsTime > SEND_LOGS_EXPIRES) { // setSendLogs(null); // return; // } // s = s.concat("```"); // JSONObject json = new JSONObject(); // try { // json.put("text", s); // final Request request = new Request.Builder() // .url(sendLogsUrl) // .post(RequestBody.create(null, json.toString())) // .build(); // client.newCall(request).enqueue(new Callback() { // @Override // public void onFailure(Request request, IOException e) { // // } // // @Override // public void onResponse(Response response) throws IOException { // // } // }); // } catch (JSONException e) { // } // // s = ""; // i = 0; // } else { // i++; // } // // } // } // // private static void writeToFile(java.util.logging.Level level, String tag, String msg) { // if (writeLogs) { // try { // fileHandler.setFormatter(new SimpleFormatter()); // fileHandler.publish(new LogRecord(level, tag + ": " + msg)); // } catch (Exception e) { // } // } // // } // // public static boolean toggleWriteLogs() { // AndroidLogProvider.writeLogs = !writeLogs; // shp.edit().putBoolean("writeLogs", writeLogs).apply(); // return writeLogs; // } // // public static void setSendLogs(String sendLogsUrl) { // AndroidLogProvider.sendLogs = sendLogsUrl != null; // AndroidLogProvider.sendLogsUrl = sendLogsUrl; // AndroidLogProvider.sendLogsTime = sendLogsUrl == null ? 0 : System.currentTimeMillis(); // shp.edit().putString("sendLogsUrl", sendLogsUrl).apply(); // shp.edit().putLong("sendLogsTime", sendLogsTime).apply(); // shp.edit().putBoolean("sendLogs", sendLogs).apply(); // } // // public static boolean isSendLogsEnabled() { // return sendLogs; // } }