package com.xxx.app;
import android.content.Context;
import android.util.Log;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class DailyLog {
private static final String TAG = "DailyLog";
private final File logDir;
private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.US);
private final SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US);
private final ExecutorService executor = Executors.newSingleThreadExecutor();
public DailyLog(Context context) {
try{
logDir = new File(context.getExternalFilesDir(null), "logs");
if (!logDir.exists()) {
logDir.mkdirs();
Log.i(TAG,"创建logs文件夹成功");
}
} catch (Exception e) {
Log.i(TAG,"DailyLog初始化失败:"+e);
throw new RuntimeException(e);
}
}
public void writeLog(final String level, final String tag, final String message) {
executor.execute(() -> {
File todayFile = getTodayFile();
try (FileWriter fw = new FileWriter(todayFile, true);
PrintWriter pw = new PrintWriter(fw)) {
String time = timeFormat.format(new Date());
pw.printf("%s [%s] %s: %s%n", time, level, tag, message);
} catch (IOException e) {
Log.e(TAG, "Failed to write log", e);
}
});
}
private File getTodayFile() {
String today = dateFormat.format(new Date());
return new File(logDir, today + ".txt");
}
public String getLogDirPath() {
return logDir.getAbsolutePath();
}
}