Android App 打印系统日志到 SD 卡 - 完整指南
在 Android 开发中,您可以使用Log类来打印系统日志。但是,默认情况下,系统日志只会输出到控制台,而不会保存到 SD 卡。要将系统日志保存到 SD 卡,您可以按照以下步骤进行操作:
- 在您的
AndroidManifest.xml文件中,添加WRITE_EXTERNAL_STORAGE权限:
<uses-permission android:name='android.permission.WRITE_EXTERNAL_STORAGE' />
- 在您的代码中,使用
Log类的方法来打印日志。例如:
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static final String TAG = 'MyApp';
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, 'This is a debug log');
Log.e(TAG, 'This is an error log');
}
}
- 创建一个辅助方法,用于将日志保存到 SD 卡。例如:
import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private static final String TAG = 'MyApp';
private static final String LOG_FILE_NAME = 'app_log.txt';
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, 'This is a debug log');
Log.e(TAG, 'This is an error log');
saveLogToFile();
}
private void saveLogToFile() {
String log = readLogFile();
String newLog = log + getFormattedLog();
try {
File logFile = new File(Environment.getExternalStorageDirectory(), LOG_FILE_NAME);
FileWriter writer = new FileWriter(logFile);
writer.append(newLog);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private String readLogFile() {
File logFile = new File(Environment.getExternalStorageDirectory(), LOG_FILE_NAME);
if (!logFile.exists()) {
return '';
}
StringBuilder log = new StringBuilder();
try {
BufferedReader reader = new BufferedReader(new FileReader(logFile));
String line;
while ((line = reader.readLine()) != null) {
log.append(line).append('
');
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return log.toString();
}
private String getFormattedLog() {
String timeStamp = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss', Locale.getDefault()).format(new Date());
return '[' + timeStamp + '] ' + TAG + ': ' + 'This is a new log' + '
';
}
}
以上代码会将系统日志保存到 SD 卡上的名为 app_log.txt 的文件中。每次调用 saveLogToFile() 方法时,它会将新的日志追加到文件末尾。请注意,要使用 SD 卡,您的设备必须具有已挂载的外部存储器,并且用户已授予 WRITE_EXTERNAL_STORAGE 权限。
原文地址: https://www.cveoy.top/t/topic/qqUH 著作权归作者所有。请勿转载和采集!