如何更优雅的打Log

新的篇章

之前做了一个 Android-ui-2019(这个同步更新)
但是有朋友反馈说,开源库内容不错,但是有点太多了,不便于查找,希望我做个开源库整理,听到这个需求,我面对1800+的开源库,竟然有点不好下手,想来想去,我决定将这个开源库进行整理,重新配图并持续更新,希望大家多多关注我。比心~

日常开发中打log日志是我们必不可少的,那么怎么写能让你的Log更美观更好看更显眼呢,今天分享一下我封装Log的方式

方式一

Log.i("lovesosoi","Logi");
Log.d("lovesosoi","Logd");
Log.v("lovesosoi","Logv");
Log.e("lovesosoi","Loge");

方式二

public static String TAG="Lovesosoi";
Log.i(TAG,"Logi");
Log.d(TAG,"Logd");
Log.v(TAG,"Logv");
Log.e(TAG,"Loge");

方式三

将Log进行简单的封装,其实就是做一个开关,也没有加太多的功能

public class LogUtils {
    private static boolean isDebug = true;
    private static String TAG = "tag";

    public boolean isDebug() {
        return isDebug;
    }

    public static void setDebug(boolean debug) {
        isDebug = debug;
    }
    public static void setTag(String debug) {
        TAG = debug;
    }

    public static void e(String msg) {
        if (isDebug) {
            Log.e(TAG,msg);
        }
    }
    public static void e(String tag,String msg) {
        if (isDebug) {
            Log.e(tag,msg);
        }
    }
}
class Test{
    public static void main(){
        LogUtils.setDebug(true);
        LogUtils.setTag("Lovesosoi");
        LogUtils.e("heheh");
    }
}

为了追求更加便捷,好看实用的Log,我在github 上进行了搜索查找,找到了以下的Log开源库。

电脑端显示Log

名字介绍star图片
logger简介好看使用的log库11540星

 

xLog简单、美观、强大、可扩展的 Android 和 Java 日志库1859星

 

KLogAndroid LogCat 工具类,支持行号、所在函数、点击自动跳转、Json格式自定解析打印等功能。1725星

 

FLogger基于双缓冲队列、多刷盘机制的超轻量级 java 日志499星 
jlogjlog是一款针对Android开发者的日志工具478星 
Android-PLogA Pure, Pretty and Powerful logging library for android165星 
LogCollector一个收集 app 输出日志的工具159星 

手机端显示Log

名字介绍star图片
Lynx可在手机上查看 logcat682星

 

LogcatViewer可在手机上查看 logcat226星

 

Console可在手机上查看 logcat92星

 

DebugOverlay-AndroidApp 端,查看 Logcat 信息80星

 

看了大神写的库,我心里就有一个疑问,我和大神的区别在哪里,我总结一下主要是两点,一是样式,大神的样式更好看,二是功能更全,我们去看一下star 最高的代码

解析Logger

为什么Logger能显示Log的代码行数,他是怎么做到的呢

调用这个方法就能获取到当前方法所在方法栈信息,我们再来看看StackTraceElement这个类

我们做一个小测试~

这样类名,方法名,行数就都获取到了。

第二个问题来了,怎么做到这么整洁的呢
源码是这么做的,拼出来的!

其他的就是格式问题了,自己动手封装一个属于自己的Log库试试吧~~

总结

所有开源库都是在 Android-ui-2019基础上修改的,欢迎大家star,我会把我遇到所有好的开源库分享出来,大家一起学习,也欢迎大家订阅我的个人微信公众号MAndroid,有问题可以问我哦,我会尽我所能给大家解答的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中我们可以通过logging模块来输出log信息,同时也可以定义自己的log类,以下是一个优雅的自定义log类的示例: ```python import logging class MyLogger: def __init__(self, name=__name__, level=logging.INFO, log_file=None): self.logger = logging.getLogger(name) self.logger.setLevel(level) formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') ch = logging.StreamHandler() ch.setFormatter(formatter) self.logger.addHandler(ch) if log_file: fh = logging.FileHandler(log_file) fh.setFormatter(formatter) self.logger.addHandler(fh) def info(self, message): self.logger.info(message.encode('utf-8').decode(sys.stdin.encoding)) def error(self, message): self.logger.error(message.encode('utf-8').decode(sys.stdin.encoding)) def warn(self, message): self.logger.warn(message.encode('utf-8').decode(sys.stdin.encoding)) def debug(self, message): self.logger.debug(message.encode('utf-8').decode(sys.stdin.encoding)) ``` 在上述代码中,我们定义了一个MyLogger类,该类包含了四个常用的log方法(info, error, warn, debug),同时也可以指定输出的log级别、log文件等信息。在log输出时,我们使用了encode和decode方法来解决中文输出的问题,其中encode的参数为'utf-8'是因为Python3默认使用的是utf-8编码,而decode的参数为sys.stdin.encoding,这样可以根据系统的编码方式来输出中文log信息。 使用示例: ```python logger = MyLogger(name='mylogger', level=logging.INFO, log_file='mylog.log') logger.info('这是一条中文log信息') ``` 输出结果: ``` 2021-11-11 10:00:00,000 - INFO - 这是一条中文log信息 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值