1、Logger簡(jiǎn)介
Logger相對(duì)系統(tǒng)自帶log,輸出格式清晰,功能更全,使用方便
github:https://github.com/orhanobut/logger
2、簡(jiǎn)單使用
1)添加依賴
implementation 'com.orhanobut:logger:2.2.0'
2)初始化
Logger.addLogAdapter(new AndroidLogAdapter());
3)使用
Logger.d("hello");
3、修改默認(rèn)配置
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.showThreadInfo(false) //(可選)是否顯示線程信息。 默認(rèn)值為true
.methodCount(2) // (可選)要顯示的方法行數(shù)。 默認(rèn)2
.methodOffset(7) // (可選)設(shè)置調(diào)用堆棧的函數(shù)偏移值,0的話則從打印該Log的函數(shù)開始輸出堆棧信息,默認(rèn)是0
.logStrategy(customLog) //(可選)更改要打印的日志策略。 默認(rèn)LogCat
.tag("MyTAG") //(可選)每個(gè)日志的全局標(biāo)記。 默認(rèn)PRETTY_LOGGER(如上圖)
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
一般使用默認(rèn)配置即可
4、設(shè)置標(biāo)簽
1)設(shè)置全局標(biāo)簽,如同修改默認(rèn)參數(shù)一樣
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.tag("MyTAG")
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
2)設(shè)置局部標(biāo)簽
Logger.t("TAG").d("tag hello");
5、關(guān)閉日志輸出
當(dāng) isLoggable 返回true時(shí)輸出日志,否則不輸出
Logger.addLogAdapter(new AndroidLogAdapter() {
@Override public boolean isLoggable(int priority, String tag) {
return BuildConfig.DEBUG;
}
});
可根據(jù)參數(shù) priority、 tag 選擇性的關(guān)閉打開日志
6、寫日志到文本
寫到日志,需要寫入權(quán)限
AndroidManifest.xml申請(qǐng),還要在動(dòng)態(tài)申請(qǐng)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
開啟寫入配置
CsvFormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
.tag("custom")
.build();
Logger.addLogAdapter(new DiskLogAdapter(formatStrategy));
從CsvFormatStrategy源碼中看到,設(shè)置后日志將會(huì)寫到根目錄logger文件夾下的文件中
String diskPath = Environment.getExternalStorageDirectory().getAbsolutePath();
String folder = diskPath + File.separatorChar + "logger";
當(dāng)日志文件超過500K時(shí),將新建文件
private static final int MAX_BYTES = 500 * 1024; // 500K averages to a 4000 lines per file
7、注意
如果要寫到文件,同時(shí)也要在控制臺(tái)中看到,需要同時(shí)添加兩個(gè)適配器
CsvFormatStrategy formatStrategy = CsvFormatStrategy.newBuilder()
.tag("custom")
.build();
Logger.addLogAdapter(new DiskLogAdapter(formatStrategy));
Logger.addLogAdapter(new AndroidLogAdapter()
{
// 是否開啟打印功能,返回true則打印,否則不打印
@Override
public boolean isLoggable(int priority, String tag)
{
return BuildConfig.DEBUG;
}
});