Giter VIP home page Giter VIP logo

alog's Introduction

ALog(该库已停止维护,后续更新都在 AndroidUtilCodeLogUtils

ALog api build License

Functions

  • 兼容 Android Studio 3.1.0 的 Logcat 完美显示日志
  • 兼容 Kotlin
  • 可设置 Log 开启和关闭
  • 可设置是否输出到控制台(Logcat)
  • 可设置 Log 全局 Tag
  • 全局 Tag 为空时 Tag 为当前类名
  • 可设置 Log 是否显示头部信息
  • Log 文件顶部显示设备信息
  • Log 头部含有当前线程名
  • Log 头部含有当前类及行号和函数名,支持点击跳转
  • 可设置 Log 是否写入文件
  • 可设置 Log 写入文件目录
  • 可设置 Log 写入文件前缀
  • 可设置 Log 是否显示边框
  • 可设置 Log 控制台过滤器
  • 可设置 Log 文件过滤器
  • 可设置 Log 栈深度
  • 可设置 Log 栈偏移
  • 可设置 Log 保存天数
  • 可增加 Log 格式化器,默认已支持 Array, Throwable, Bundle, Intent 格式化输出
  • 支持控制台长字符串的输出
  • 支持多参数输出
  • 支持单独写入文件
  • 支持 JSON 串的输出
  • 支持 XML 串的输出
  • 支持 Live Templates
  • jar 包不足 5Kb

API -> ALog.java -> Demo

init                     : 初始化
getConfig                : 获取 log 配置
Config.setLogSwitch      : 设置 log 总开关
Config.setConsoleSwitch  : 设置 log 控制台开关
Config.setGlobalTag      : 设置 log 全局 tag
Config.setLogHeadSwitch  : 设置 log 头部信息开关
Config.setLog2FileSwitch : 设置 log 文件开关
Config.setDir            : 设置 log 文件存储目录
Config.setFilePrefix     : 设置 log 文件前缀
Config.setBorderSwitch   : 设置 log 边框开关
Config.setSingleTagSwitch: 设置 log 单一 tag 开关(为美化 AS 3.1 的 Logcat)
Config.setConsoleFilter  : 设置 log 控制台过滤器
Config.setFileFilter     : 设置 log 文件过滤器
Config.setStackDeep      : 设置 log 栈深度
Config.setStackOffset    : 设置 log 栈偏移
Config.setSaveDays       : 设置 log 可保留天数
Config.addFormatter      : 新增 log 格式化器
log                      : 自定义 tag 的 type 日志
v                        : tag 为类名的 Verbose日志
vTag                     : 自定义 tag 的 Verbose日志
d                        : tag 为类名的 Debug 日志
dTag                     : 自定义 tag 的 Debug 日志
i                        : tag 为类名的 Info 日志
iTag                     : 自定义 tag 的 Info 日志
w                        : tag 为类名的 Warn 日志
wTag                     : 自定义 tag 的 Warn 日志
e                        : tag 为类名的 Error日志
eTag                     : 自定义 tag 的 Error日志
a                        : tag 为类名的 Assert 日志
aTag                     : 自定义 tag 的 Assert 日志
file                     : log 到文件
json                     : log 字符串之 json
xml                      : log 字符串之 xml

How to use

compile 'com.blankj:alog:1.9.1' or Download

Usage

初始化

在 Application 的 onCreate 函数中初始化,如下

// init it in ur application
public void initALog() {
    ALog.Config config = ALog.init(this)
            .setLogSwitch(BuildConfig.DEBUG)// 设置 log 总开关,包括输出到控制台和文件,默认开
            .setConsoleSwitch(BuildConfig.DEBUG)// 设置是否输出到控制台开关,默认开
            .setGlobalTag(null)// 设置 log 全局标签,默认为空
            // 当全局标签不为空时,我们输出的 log 全部为该 tag,
            // 为空时,如果传入的 tag 为空那就显示类名,否则显示 tag
            .setLogHeadSwitch(true)// 设置 log 头信息开关,默认为开
            .setLog2FileSwitch(false)// 打印 log 时是否存到文件的开关,默认关
            .setDir("")// 当自定义路径为空时,写入应用的 /cache/log/ 目录中
            .setFilePrefix("")// 当文件前缀为空时,默认为 "alog",即写入文件为 "alog-MM-dd.txt"
            .setBorderSwitch(true)// 输出日志是否带边框开关,默认开
            .setSingleTagSwitch(true)// 一条日志仅输出一条,默认开,为美化 AS 3.1 的 Logcat
            .setConsoleFilter(ALog.V)// log 的控制台过滤器,和 logcat 过滤器同理,默认 Verbose
            .setFileFilter(ALog.V)// log 文件过滤器,和 logcat 过滤器同理,默认 Verbose
            .setStackDeep(1)// log 栈深度,默认为 1
            .setStackOffset(0)// 设置栈偏移,比如二次封装的话就需要设置,默认为 0
            .setSaveDays(3)// 设置日志可保留天数,默认为 -1 表示无限时长
            // 新增 ArrayList 格式化器,默认已支持 Array, Throwable, Bundle, Intent 的格式化输出
            .addFormatter(new ALog.IFormatter<ArrayList>() {
                @Override
                public String format(ArrayList list) {
                    return "ALog Formatter ArrayList { " + list.toString() + " }";
                }
            });
    ALog.d(config.toString());
}

借助我帮大家写好的 Live Templates 大家可以更方便地使用 ALog,演示动画如下所示。

templates

大家可以下载这个 Live Templates 包,然后在 AS 中 File -> Import Settings 即可。

关于如何写 Live Templates,其实大家可以借鉴安卓自带的 Live Templates,然后效仿一下即可。

默认初始化下的图例

  • ALog.d("debug");

detail

  • ALog.d("customTag", "debug0", "debug1");

args

  • ALog.d(longStr);

long

  • ALog.file(longStr);

file

filecontent

  • ALog.json(json);

json

  • ALog.xml(xml);

xml

更多使用请运行 demo 来查看。

Contact

jianshu weibo Blog QQ0Group QQ1Group

alog's People

Contributors

blankj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

alog's Issues

android 7.0 日志打印不出来,华为畅享7

10-18 11:00:00.748 29539-29539/? I/art: Late-enabling -Xcheck:jni
10-18 11:00:00.896 29539-29539/com.blankj.alog W/System: ClassLoader referenced unknown path: /data/app/com.blankj.alog-1/lib/arm

报了这个错,但是写文件是可以,难道是我的开发工具有问题.....我换成模拟器日志可以正常打印....

去掉final呗

我想放到个人工具库里,直接依赖这个库,然后用子类来扩展。不然还要复制一遍

AndroidX支持

不支持下AndroidX吗,目前SimpleArrayMap调用的v4包

说点建议哈,并没有在使用,

主要是些自己的感觉,或者说习惯,也许作者有自己的想法,

不支持给指定tag设置log级别?
这个可以有,虽然是也可以在logcat设置过滤,但这不方便,
可以来个资源文件,管理标签对应的log级别,
或者干脆在最后调用Log类输出日志那里判断一下安卓的Log.isLoggelable(tag,level),

还有表示日志级别的6个常量,首先完全没必要为了一个方法去定义一个注解,
而且其实可以直接用Log里的常量,或者来个方法转换一下,这样最后输出日志可以用一个
Log.println(int priority, String tag, String msg)代替那一大段switch,
Log.v(tag, msg);
Log.d(tag, msg);
Log.i(tag, msg);
Log.w(tag, msg);
Log.e(tag, msg);
Log.wtf(tag, msg);

217行的这个,
if (V == sLogFilter || type >= sLogFilter) {
前一个条件是多余的吧,

是否可以支持日志按类别输出到不同文件

  • error,自定义名字+error.log
  • debug, 自定义名字+debug.log
    之类的。功能如下:
  • 可设定是否分级别将日志输出到不同文件
  • 可设定保存不同级别日志的文件名,默认值为日期+级别.log

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.