1.adb logcat过滤器表达式的格式是tag:priority ... ,其中tag是标记, priority是最小的优先级,该标记标识的所有大于等于指定优先级的消息被写入日志。也可以在一个过滤器表达式中提供多个这样的过滤,它们之间用空格隔开。
下面给出的例子是仅输出标记为“MyActivity”并且优先级大于等于“Info”和标记为“MyApp”并且优先级大于等于“Verbose”的日志:
adb logcat MyActivity:I MyApp:V *:S
2.优先级是下面的字符,顺序是从低到高:
- V — 明细 (最低优先级)
- D — 调试
- I — 信息
- W — 警告
- E — 错误
- F — 严重错误
- S — 无记载 (最高优先级,没有什么会被记载)
public static void saveLogToSD() {
File appDirectory = new File( Environment.getExternalStorageDirectory() + "/MyPersonalAppFolder" );
File logDirectory = new File( appDirectory + "/log" );
File logFile = new File( logDirectory, "logcat" + System.currentTimeMillis() + ".txt" );
// create app folder
if ( !appDirectory.exists() ) {
appDirectory.mkdir();
}
// create log folder
if ( !logDirectory.exists() ) {
logDirectory.mkdir();
}
// clear the previous logcat and then write the new one to the file
try {
Process process = Runtime.getRuntime().exec( "logcat -c");
process = Runtime.getRuntime().exec( "logcat -f " + logFile+" *:S onSensorChanged:I"); // + " *:S MyActivity:D MyActivity2:D");
} catch ( IOException e ) {
e.printStackTrace();
}
}
4.adb命令输出到文件
adb -d logcat -f /sdcard/log.txt
注意:Ctrl+C停止,否则不会保存
5.直接输出到文件
package com.fiberhome.test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
OutputStreamWriter printWriter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
File appDirectory = new File(Environment.getExternalStorageDirectory()
+ "/FsgFolder");
File logDirectory = new File(appDirectory + "/log");
File logFile = new File(logDirectory, "logcat"
+ System.currentTimeMillis() + ".txt");
// create app folder
if (!appDirectory.exists()) {
appDirectory.mkdir();
}
// create log folder
if (!logDirectory.exists()) {
logDirectory.mkdir();
}
try {
printWriter=new OutputStreamWriter(new FileOutputStream(logFile), "GBK");
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
try {
printWriter.append("----"); //所需要打印的信息
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}