I have a application. I want to create a log file in the sd card while launching my android application and want write error,warning,infor into that file.How it can be done? If anybody knows please help me..
Asked
Active
Viewed 71 times
1 Answers
0
I do it this way: U can put this code into the start activity or in the application class
final String filePath = mediaFileService.getExternalCrashDir()
+ "LOG" + new Date().toString() + ".txt";
Runtime.getRuntime().exec(new String[]{
"logcat", "-f", filePath, "ActivityManager:I", "LOG" + ":V",
"*:S"
});
make the specific log class and use it for logging
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);
}
}

Warabei
- 143
- 1
- 8