2014-10-23 5 views
0

나는 응용 프로그램이 있습니다. 내 안드로이드 응용 프로그램을 실행하는 동안 sd 카드에 로그 파일을 만들고 그 파일에 오류, 경고, 정보를 쓰고 싶습니다. 어떻게 할 수 있습니까? U는 특정 로그 클래스를 만들기 시작 활동에 또는 응용 프로그램 클래스안드로이드 응용 프로그램을 실행하는 동안 로그 파일에 메시지를 넣어

final String filePath = mediaFileService.getExternalCrashDir() 
      + "LOG" + new Date().toString() + ".txt"; 
Runtime.getRuntime().exec(new String[]{ 
       "logcat", "-f", filePath, "ActivityManager:I", "LOG" + ":V", 
       "*:S" 
     }); 

에이 코드를 넣어 로깅에 사용할 수 있습니다 : 누군가가 알고 있다면 내가이 방법을 ..

답변

0

를 좀 도와주세요

public class L { 

interface Logger { 
    public int print(String tag, String msg); 
} 

private static final int MAX_STRING_SIZE = 2000; 
private static final Logger verboseLogger = new Logger() { 
    @Override 
    public int print(final String tag, final String msg) { 
     return Log.v(tag, msg); 
    } 
}; 
private static final Logger debugLogger = new Logger() { 
    @Override 
    public int print(final String tag, final String msg) { 
     return Log.d(tag, msg); 
    } 
}; 
private static final Logger infoLogger = new Logger() { 
    @Override 
    public int print(final String tag, final String msg) { 
     return Log.i(tag, msg); 
    } 
}; 
private static final Logger warnLogger = new Logger() { 
    @Override 
    public int print(final String tag, final String msg) { 
     return Log.w(tag, msg); 
    } 
}; 
private static final Logger errorLogger = new Logger() { 
    @Override 
    public int print(final String tag, final String msg) { 
     return Log.w(tag, msg); 
    } 
}; 

private static void printWithLogger(String s, Logger l) { 
    if (s.length() > MAX_STRING_SIZE || s.contains("\n")) { 
     long stringId = Math.abs(UUID.randomUUID().getMostSignificantBits()); 
     ArrayList<String> lines = new ArrayList<String>(); 
     for (String innerLine : s.split("\n")) { 
      int aCursor = 0; 
      while (innerLine.length() - aCursor >= MAX_STRING_SIZE) { 
       lines.add(innerLine.substring(aCursor, aCursor + MAX_STRING_SIZE)); 
       aCursor += MAX_STRING_SIZE; 
      } 
      lines.add(innerLine.substring(aCursor)); 
     } 
     int totalPartsCount = lines.size(); 
     for (int i = 1; i <= lines.size(); i++) { 
      l.print("LOG", String.format("LongString_%s[%d/%d] %s", stringId, i, totalPartsCount, 
        lines.get(i - 1))); 
     } 
    } else { 
     l.print("LOG", s); 
    } 
} 

private static String format(String tag, String msg) { 
    if (tag != null && tag.length() > 0) { 
     return tag + " " + msg; 
    } else { 
     return msg; 
    } 
} 

public static void v(String tag, String msg) { 
    printWithLogger(format(tag, msg), verboseLogger); 
} 

public static void v(String tag, String msg, Throwable tr) { 
    printWithLogger(format(tag, msg), verboseLogger); 
    printWithLogger(Log.getStackTraceString(tr), verboseLogger); 
} 

public static void d(String tag, String msg) { 
    printWithLogger(format(tag, msg), debugLogger); 
} 

public static void d(String tag, String msg, Throwable tr) { 
    printWithLogger(format(tag, msg), debugLogger); 
    printWithLogger(Log.getStackTraceString(tr), debugLogger); 
} 

public static void i(String tag, String msg) { 
    printWithLogger(format(tag, msg), infoLogger); 
} 

public static void i(String tag, String msg, Throwable tr) { 
    printWithLogger(format(tag, msg), infoLogger); 
    printWithLogger(Log.getStackTraceString(tr), infoLogger); 
} 

public static void w(String tag, String msg) { 
    printWithLogger(format(tag, msg), warnLogger); 
} 

public static void w(String tag, String msg, Throwable tr) { 
    printWithLogger(format(tag, msg), warnLogger); 
    printWithLogger(Log.getStackTraceString(tr), warnLogger); 
} 

public static void w(String tag, Throwable tr) { 
    printWithLogger(Log.getStackTraceString(tr), warnLogger); 
} 

public static void e(String tag, String msg) { 
    printWithLogger(format(tag, msg), errorLogger); 
} 

public static void e(String tag, String msg, Throwable tr) { 
    printWithLogger(format(tag, msg), errorLogger); 
    printWithLogger(Log.getStackTraceString(tr), errorLogger); 
} 

}

관련 문제