Как получить конкретный вход в файл CSV / TXT для устройства Android

Я хочу получить журнал на свое устройство в файле csv/txt. Проблема в том, что я просто хочу определенный Журнал из одной Деятельности. Следующий код - это Код, который я хочу получить.

  final Beacon maxBeacon = Collections.max(beacons, new Comparator<Beacon>() {
            public int compare(Beacon b1, Beacon b2) {
                return Integer.compare(b1.getRssi(), b2.getRssi());

            }


        });
        WifiManager manager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
        WifiInfo info = manager.getConnectionInfo();
        String address = info.getMacAddress();
        String Bmacstring = String.valueOf(maxBeacon.getMacAddress());
        String newString = Bmacstring.replace("[", "");
        newString = newString.replace("[", "");
        newString = newString.replace("]", "");
        String query = "?deviceMacAddress=" + info.getMacAddress() + "&beaconMacAddress=" + newString;
        Log.i("Rss", String.valueOf(maxBeacon));
        new HttpAsyncTask().execute("http://192.168.137.121:1010/api/History/CreatHistory" + query);

Я хочу Журнал Log.i("Rss", String.valueOf(maxBeacon)); в коде выше в устройстве Android.

Любая помощь будет оценена. Спасибо

1 ответ

Решение

Иногда, прежде чем я создал вспомогательный класс для ведения журнала, чтобы сохранить журнал в текстовом файле.

import android.os.Environment;
import android.util.Log;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

/**
 * TODO: Add a class header comment!
 *
 * @author Dhaval Patel
 * @version 1.0, May 24, 2015
 * @since 1.0
 */
public final class Logger {

    private static final String LOG_PREFIX = "appname_";
    private static final int LOG_PREFIX_LENGTH = LOG_PREFIX.length();
    private static final int MAX_LOG_TAG_LENGTH = 23;

    private static final Boolean ENABLE_CONSOLE_LOG = true;  //Flag to enable or disable console log
    private static final Boolean ENABLE_FILE_LOG = true;  //Flag to enable or disable file log
    private static final LogLevel GLOBAL_LOG_LEVEL = LogLevel.VERBOSE; //Flag indicate log level
    private static final String LOG_DIRECTORY = Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator+"log"+ File.separator;

    public static String makeLogTag(String str) {
        if (str.length() > MAX_LOG_TAG_LENGTH - LOG_PREFIX_LENGTH) {
            return LOG_PREFIX + str.substring(0, MAX_LOG_TAG_LENGTH - LOG_PREFIX_LENGTH - 1);
        }
        return LOG_PREFIX + str;
    }

    private enum LogLevel{
        VERBOSE(Log.VERBOSE),
        DEBUG(Log.DEBUG),
        INFO(Log.INFO),
        WARNING(Log.WARN),
        ERROR(Log.ERROR),
        ASSERT(Log.ASSERT);

        private final int logLevel;
        LogLevel(int logLevel) {
            this.logLevel = logLevel;
        }

        public int getLogLevel() {
            return logLevel;
        }
    }


    /**
     *
     * @param tag Used to identify the source of a log message.  It usually identifies
     *            the class or activity where the log call occurs.
     * @param msg The message you would like logged.
     *
     */
    public static void v(String tag, String msg) {
        write(LogLevel.VERBOSE, tag, msg);
    }

    /**
     *
     * @param tag Used to identify the source of a log message.  It usually identifies
     *            the class or activity where the log call occurs.
     * @param msg The message you would like logged.
     * @param tr  An exception to log
     *
     */
    public static void v(String tag, String msg, Throwable tr) {
        write(LogLevel.VERBOSE, tag, msg, tr);
    }

    /**
     *
     * @param tag Used to identify the source of a log message.  It usually identifies
     *            the class or activity where the log call occurs.
     * @param msg The message you would like logged.
     *
     */
    public static void d(String tag, String msg) {
        write(LogLevel.DEBUG, tag, msg);
    }

    /**
     *
     * @param tag Used to identify the source of a log message.  It usually identifies
     *            the class or activity where the log call occurs.
     * @param msg The message you would like logged.
     * @param tr  An exception to log
     *
     */
    public static void d(String tag, String msg, Throwable tr) {
        write(LogLevel.DEBUG, tag, msg, tr);
    }

    /**
     *
     * @param tag Used to identify the source of a log message.  It usually identifies
     *            the class or activity where the log call occurs.
     * @param msg The message you would like logged.
     *
     */
    public static void i(String tag, String msg) {
        write(LogLevel.INFO, tag, msg);
    }

    /**
     *
     * @param tag Used to identify the source of a log message.  It usually identifies
     *            the class or activity where the log call occurs.
     * @param msg The message you would like logged.
     * @param tr  An exception to log
     *
     */
    public static void i(String tag, String msg, Throwable tr) {
        write(LogLevel.INFO, tag, msg, tr);
    }

    /**
     *
     * @param tag Used to identify the source of a log message.  It usually identifies
     *            the class or activity where the log call occurs.
     * @param msg The message you would like logged.
     *
     */
    public static void w(String tag, String msg) {
        write(LogLevel.WARNING, tag, msg);
    }

    /**
     *
     * @param tag Used to identify the source of a log message.  It usually identifies
     *            the class or activity where the log call occurs.
     * @param msg The message you would like logged.
     * @param tr  An exception to log
     *
     */
    public static void w(String tag, String msg, Throwable tr) {
        write(LogLevel.WARNING, tag, msg, tr);
    }

    /**
     *
     * @param tag Used to identify the source of a log message.  It usually identifies
     *            the class or activity where the log call occurs.
     * @param msg The message you would like logged.
     *
     */
    public static void e(String tag, String msg) {
        write(LogLevel.ERROR, tag, msg);
    }

    /**
     *
     * @param tag Used to identify the source of a log message.  It usually identifies
     *            the class or activity where the log call occurs.
     * @param msg The message you would like logged.
     * @param tr  An exception to log
     *
     */
    public static void e(String tag, String msg, Throwable tr) {
        write(LogLevel.ERROR, tag, msg, tr);
    }

    private static boolean isLogEnable(LogLevel logLevel){
        return GLOBAL_LOG_LEVEL.getLogLevel() <= logLevel.getLogLevel();
    }

    private static void write(LogLevel logLevel, String tag, String log) {
        if (isLogEnable(logLevel) && ENABLE_FILE_LOG){
            StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[4];
            String logPoint = stackTraceElement.getClassName() + "." + stackTraceElement.getMethodName() + ":" + stackTraceElement.getLineNumber();
            String msg = "["+getCurrentDateTime()+"] "+ logLevel.name() +" "+ logPoint +" "+tag+"//:"+log;
            write(msg);
        }

        if (isLogEnable(logLevel) && ENABLE_CONSOLE_LOG){
            Log.println(logLevel.getLogLevel(), makeLogTag(tag), log);
        }
    }

    private static void write(LogLevel logLevel, String tag, String log, Throwable tr){
        if (isLogEnable(logLevel) && ENABLE_FILE_LOG){
            StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[4];
            String logPoint = stackTraceElement.getClassName() + "::" + stackTraceElement.getMethodName() + ":" + stackTraceElement.getLineNumber();
            String msg = "["+getCurrentDateTime()+"] "+ logLevel.name() +" "+ logPoint+" "+tag+"//:"+log+"\n"+Log.getStackTraceString(tr);
            write(msg);
        }

        if (isLogEnable(logLevel) && ENABLE_CONSOLE_LOG){
            Log.println(logLevel.getLogLevel(), makeLogTag(tag), log + "\n" + Log.getStackTraceString(tr));
        }
    }

    private static void write(String text){
        BufferedWriter out = null;
        String filePath = LOG_DIRECTORY +"AppLog.txt";
        try {

            SimpleDateFormat df = new SimpleDateFormat("dd_MMM_yyyy", Locale.ENGLISH);
            String formattedDate = df.format(System.currentTimeMillis());

            if(!new File(LOG_DIRECTORY).exists()) {
                new File(LOG_DIRECTORY).mkdirs();
            }

            if(!new File(filePath).exists())
                new File(filePath).createNewFile();

            if(new File(filePath).exists()){
                FileWriter fStream = new FileWriter(filePath, true);
                out = new BufferedWriter(fStream);
                out.write(text);
                out.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if(out!=null)
                    out.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static String getCurrentDateTime(){
        return new SimpleDateFormat("dd MMM yyyy HH:mm:ss:SSS" , Locale.getDefault()).format(Calendar.getInstance().getTime());
    }

}

Использование:

Logger.i("Rss", String.valueOf(maxBeacon)); 
Другие вопросы по тегам