LLogger



作用

日志工具,支持更多信息的打印

  • 支持打印行号、方法、内部类名
  • 支持在Logcat中的点击行号跳转代码
  • 支持空参,单一参数,多参数打印
  • 支持log日志信息写入本地文件,以时间为节点,避免日志内容过长,且支持获取和压缩打包log文件
  • 支持Java环境log打印,如在android的test本地单元测试中打印
  • 支持JSON字符串、JSON对象、JSON数组友好格式化打印
  • 支持超长4000+字符串长度打印

引用

implementation "com.licola:llogger:1.3.2"
复制代码

使用

静态方法,一行代码调用

LLogger.d();
    LLogger.d("debug");
    LLogger.d("debug", "more info");
复制代码

配置

LLogger默认打印log,默认tag为LLogger,默认不写入log文件,导入即可用。 如果配置就是一行代码,简单易用。 在实际项目需要配置参数,建议在Application类中初始化配置,下面示例代码。

/**
 * Created by LiCola on 2018/5/14.
 */
public class MyApplication extends Application {

  public static final String LOG_FILE_PREFIX = "llogger_";
  public static final String LOG_FILE_DIR = "log-file";

  private static final boolean showLog = BuildConfig.DEBUG;

  private static final String TAG = "Demo";

  @Override
  public void onCreate() {
    super.onCreate();
//    LLogger.init(showLog);//打开log显示
//    LLogger.init(showLog, TAG);//打开log显示 配置Tag

    //建议在cache下指定二级目录 存放log文件 避免cache中文件杂乱
    File logDir = new File(getCacheDir(), LOG_FILE_DIR);
//    LLogger.init(showLog, TAG, logDir);//打开log显示 配置Tag log信息写入本地目录
    LLogger.init(showLog, TAG, logDir, LOG_FILE_PREFIX);//打开log显示 配置tag log信息写入本地目录 并固定log文件后缀
  }
}
复制代码

效果图



关于log本地文件

可以看到上图的llogger_2018-05-22_10.loglog文件信息。

文件名格式:文件名前缀_日期信息_小时信息

因为只要开启写入本地文件功能,程序运行就会log日志打印,为了避免信息太过冗长。 采用小时为节点,写入到本地文件,效果如下



获取log文件

因为log文件以时间为节点分开,会存在大量的日志文件,所以提供静态方法获取日志文件列表或压缩日志文件

List<File> files = LLogger.fetchLogList();//获取所有的日志文件列表
    List<File> files = LLogger.fetchLogList(24);//获取前24小时内的日志文件列表

    File logZipFile = LLogger.makeLogZipFile("log.zip");//打包所有的日志文件
    File logZipFile = LLogger.makeLogZipFile("log.zip", 0);//打包当前时间的日志文件 ,如果为0表示当前小时

复制代码

关于Java环境

LLogger内部初始化时判定运行环境,如果是Java环境(比如android单元测试test目录下运行本地测试代码环境),也可以打印出log信息



在IDEA的纯Java环境也可以在Run中打印出信息

基本仿照Logcat格式:也是支持点击行号跳转代码

log:05-22 15:05:51.316 main Verbose/LLogger: [ (ExampleUnitTest.java:19)#LLoggerTest ] verbose
格式:日期 时间 线程名 log类型 log的Tag:[ (类名:行号)#方法名 ] 参数
复制代码

参考

本项目基础参考自:KLog。感谢提供基础思路。