Android 日志滚动覆盖:1MB 文件大小限制代码示例
以下是在 Android 中写入日志并进行滚动覆盖的代码示例,该代码示例会确保日志文件大小始终保持在 1MB 以内:
import android.util.Log;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Logger {
private static final String TAG = "Logger";
private static final String LOG_FILE_NAME = "log.txt";
private static final long MAX_FILE_SIZE = 1024 * 1024; // 1MB
public static void writeLog(String message) {
try {
// 获取日志文件路径
File logFile = new File(getLogFileDirectory(), LOG_FILE_NAME);
// 检查日志文件大小
if (logFile.exists() && logFile.length() >= MAX_FILE_SIZE) {
// 如果日志文件超过最大大小,则删除旧日志文件
logFile.delete();
}
// 写入日志
FileWriter writer = new FileWriter(logFile, true);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String timestamp = sdf.format(new Date());
writer.append("[" + timestamp + "] " + message + "\n");
writer.flush();
writer.close();
} catch (IOException e) {
Log.e(TAG, "Error writing log file: " + e.getMessage());
}
}
private static String getLogFileDirectory() {
// 获取应用的外部存储目录,如果不存在则返回内部存储目录
File externalDir = android.os.Environment.getExternalStorageDirectory();
File appDir = new File(externalDir, "MyApp");
if (!appDir.exists()) {
appDir.mkdirs();
}
return appDir.getAbsolutePath();
}
}
在你的代码中,可以使用Logger.writeLog('your message')来写入日志。这个方法会自动检查日志文件的大小,并在文件大小超过1MB时删除旧日志文件。请确保你的应用已经获取了写入外部存储的权限(WRITE_EXTERNAL_STORAGE)。
此外,你需要在AndroidManifest.xml文件中添加以下权限声明:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
请注意,这段代码是基于外部存储创建日志文件,如果你想将日志保存在内部存储中,可以修改getLogFileDirectory()方法返回应用的内部存储目录。
原文地址: https://www.cveoy.top/t/topic/mY7Y 著作权归作者所有。请勿转载和采集!