LogUtil日志打印工具

本文介绍了一种根据构建类型动态调整日志级别的日志工具类实现方法,该工具类能够根据不同的构建配置(如debug或release)来决定是否打印日志及日志的详细程度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目开发过程中需要经常打印日志,而上线后的APP我们希望不打印出调试日志,所以自己封装一个日志工具类,可以buildtype来决定是否打印日志:

build.gradle中在debug中定义:

  buildConfigField "int", "ENABLE_DEBUG_LEVEL", "5"

在release中定义:

  buildConfigField "int", "ENABLE_DEBUG_LEVEL", "0"

工具类:

public class LogUtil {

    private LogUtil() {
        throw new UnsupportedOperationException("L cannot instantiated!");
    }

    public static void v(String tag, String msg) {
        if (BuildConfig.ENABLE_DEBUG_LEVEL >= 5)
            Log.v(tag, msg);
    }

    public static void d(String tag, String msg) {
        if (BuildConfig.ENABLE_DEBUG_LEVEL >= 4) {
            if (msg.length() > 3000) {
                for (int i = 0; i < msg.length(); i += 3000) {
                    if (i + 3000 < msg.length())
                        Log.d(tag, msg.substring(i, i + 3000));
                    else
                        Log.d(tag, msg.substring(i, msg.length()));
                }
            } else {
                Log.d(tag, msg);
            }

        }

    }

    public static void i(String tag, String msg) {
        if (BuildConfig.ENABLE_DEBUG_LEVEL >= 3)
            Log.i(tag, msg);
    }

    public static void w(String tag, String msg) {
        if (BuildConfig.ENABLE_DEBUG_LEVEL >= 2)
            Log.w(tag, msg);
    }

    public static void e(String tag, String msg) {
        if (BuildConfig.ENABLE_DEBUG_LEVEL >= 1) {
            if (msg.length() > 3000) {
                for (int i = 0; i < msg.length(); i += 3000) {
                    if (i + 3000 < msg.length())
                        Log.e(tag, msg.substring(i, i + 3000));
                    else
                        Log.e(tag, msg.substring(i, msg.length()));
                }
            } else {
                Log.e(tag, msg);
            }

        }
    }

}

 

mylog 是一个多线程安全、高效、易用性很强的 C/C 库 .只需要一个初始化日志目录以及文件名,你就可以像使用 printf 一样的去打印日志。通过日志可以定位(多线程)请求 ip, logid,执行时间等。 1 说明 1) 本文件夹包含源码src以及示例文件sample 2) 编译src生成output(包括iånclude和lib) 3) 使用output的lib和include,具体可以查看sample的Makefile和code 4) 日志级别为FATAL, WARNING, NOTICE, TRACE, DEBUG,以此级别变低 5) 使用MY_LOG_FATAL等打印日志,和printf使用方式类似,非常简单。 2 使用API(查看mylog.h) 1) 初始化日志目录 my_log_init(const char* log_path, const char* normal_path, const char* warn_fatal_path, const int log_level) log_path : log路径 normal_path : 正常日志目录 warn_fatal_path : 异常日志目录 log_level : 日志级别 2) 初始化线程日志数据 my_log_thread_init() 多线程使用 3) 设置一个线程的logid my_log_set_logid(logid) 必须在my_log_thread_init() 之后使用。 4) 设置一个线程的reqip  my_log_set_reqip(reqip) 必须在my_log_thread_init() 之后使用. 5) 设置一个线程的reqip my_log_set_mod(mod) 设置一个线程的reqip, 必须在单线程中使用或者my_log_thread_init() 之后使用. 6)设置计算执行时间的类型(打印时间是ms还是us) my_log_set_time_type(time_type) 必须在单线程中使用或者my_log_thread_init() 之后使用. 7) 打印FATAL日志 MY_LOG_FATAL(logfmt, arg...) 日记级别 >=1会打印 FATAL日志。 8)打印WARNNING日志 MY_LOG_WARNING(logfmt, arg...) 日记级别 >=2会打印 WARNING日志。 9) 打印NOTICE日志 MY_LOG_NOTICE(logfmt, arg...) 日记级别 >=4会打印 NOTICE日志。 10)打印TRACE日志 MY_LOG_TRACE(logfmt, arg...) 日记级别 >=8会打印TRACE日志。 11) 打印DEBUG日志 MY_LOG_DEBUG(logfmt, arg...) 标签:mylog 分享 window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "2", "bdMiniList": [], "bdPic": "", "bdStyle": "1", "bdSize": "24" }, "share": {} }; with (document)0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' ~(-new Date() / 36e5)];\r\n \r\n \r\n \r\n \r\n \u8f6f\u4ef6\u9996\u9875\r\n \u8f6f\u4ef6\u4e0b\u8f7d\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\nwindow.changyan.api.config({\r\nappid: 'cysXjLKDf', conf: 'prod_33c27aefa42004c9b2c12a759c851039' });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值