Logcat
這是一個(gè)Android 上 效率極高的 Log 工具,主要功能為控制不同級(jí)別的Log輸出,Log信息保存到文件、打印行號(hào)龙助、函數(shù)調(diào)用、Json解析频祝、點(diǎn)擊跳轉(zhuǎn)泌参、多標(biāo)簽Tag 支持無(wú)限長(zhǎng)字符串打印,無(wú)Logcat4000字符限制等功能
打印行號(hào)常空、函數(shù)調(diào)用沽一、Json解析、點(diǎn)擊跳轉(zhuǎn) 參照KLog of ZhaoKaiQiang.
Gradle
dependencies {
implementation 'com.github.iflove:Logcat:v2.0.0'
}
1.開(kāi)始使用 Logcat
你只需要在 Application 里面調(diào)用Logcat.initialize一次即可完成初始化
//初始化Logcat
Logcat.initialize(this);
配置更多信息
Builder builder = Logcat.newBuilder();
builder.topLevelTag("Root");
//設(shè)置Log 保存的文件夾
builder.logSavePath(StorageUtils.getDiskCacheDir(this, "log"));
//設(shè)置輸出日志等級(jí)
if (BuildConfig.DEBUG) {
builder.logCatLogLevel(Logcat.SHOW_ALL_LOG);
} else {
builder.logCatLogLevel(Logcat.SHOW_INFO_LOG | Logcat.SHOW_WARN_LOG | Logcat.SHOW_ERROR_LOG);
}
//設(shè)置輸出文件日志等級(jí)
builder.fileLogLevel(Logcat.NOT_SHOW_LOG);
Logcat.initialize(this, builder.build());
2.示例
//控制臺(tái)
Logcat.v("The is verbose log");
Logcat.d("The is debug log");
Logcat.i("The is info log");
Logcat.w("The is warn log");
Logcat.e("The is error log");
3.LogTransaction 為L(zhǎng)ogcat 提供靈活的鏈?zhǔn)秸{(diào)用api
msg(@NonNull final Object msg);// 打印 msg
msgs(@NonNull final Object... msg);// n ... msg
tag(@NonNull final String tag);// 打印 tag
tags(@NonNull final String... tags); //n ... tag
file(); // log默認(rèn)輸出到文件
file(@NonNull final String fileName); //指定文件名
ln(); //換行
format(@NonNull final String format, Object... args); //格式化
out(); //輸出log
4.Logcat log 文件
--默認(rèn)log文件夾 sdcard/Android/data/you.pakeage/cache/logs 下
//文件log 格式
11-29 22:25:32.363 5523-1/com.lazy.logging V/Logcat[ (MainActivity.java:104)#PrintLog ] output file msg
5.JLog
安卓開(kāi)發(fā)者都知道漓糙,Android系統(tǒng)的單條日志打印長(zhǎng)度是有限的, 底層Logger Logger.h
文件中限制了輸出日志字符的大小铣缠,具體原因就不造了。
Logger.h
#define LOGGER_ENTRY_MAX_LEN (4*1024)
#define LOGGER_ENTRY_MAX_PAYLOAD \\
(LOGGER_ENTRY_MAX_LEN - sizeof(struct logger_entry))
開(kāi)發(fā)也沒(méi)法子通過(guò)API來(lái)改變這一值昆禽。只能采取分段打印的辦法輸出日志信息蝗蛙。但是我發(fā)現(xiàn)了Java 的System.out.println()
是沒(méi)有限制的,但是在安卓平臺(tái)上這會(huì)轉(zhuǎn)變?yōu)榘沧縄NFO 級(jí)的日志醉鳖,而且無(wú)需你分段打印的輸出日志(是不是很??)捡硅。在實(shí)際項(xiàng)目中,一般就也只有請(qǐng)求HTTP接口盗棵,而接口又是返回一個(gè)比較大JSON壮韭,超過(guò)4000 字符北发,安卓的Log API 就好截?cái)啵蜔o(wú)法看到完整的響應(yīng)數(shù)據(jù)了喷屋。采取分段輸出琳拨,雖然能看到完整的響應(yīng)數(shù)據(jù),但是每達(dá)4000字符時(shí)突然的換行以及不對(duì)齊屯曹,稍微不慎就會(huì)拷錯(cuò)狱庇,拷多json 字符串處理用工具解析查看。當(dāng)然每次調(diào)試看請(qǐng)求數(shù)據(jù)也是可以的不過(guò)很是低效的恶耽。所以我做了個(gè)大膽的嘗試(加入JLog)密任,通過(guò) socket
把日志傳送到Java的控制中打印。
JLogServer
Run JLogServer 步驟: 下載JLogServer.java 到你的項(xiàng)目,用as 直接run main(),JLogServer 可以配置相應(yīng)的端口驳棱,也可以用adb 端口映射批什。
Logcat dispatchLog
...
builder.dispatchLog(new JLog("192.168.3.15", 5036));
6.Future
JLogServer.java 是否能作為一個(gè)idea intellij plugin ?
7.Sample Usage
超長(zhǎng)的Log完美輸出
json format 輸出格式
文件Log輸出格式
License
Copyright 2016 Lazy
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
About me
Email: 13532605287@163.com
歡迎掃一掃农曲!