Android Log工具类,Toast工具类,获取当前方法名称

MqttSendTools.jar 支持多设备推送,多数据库类型推送数据。在线配置,简单 立即下载

 

Log新晋工具方法

 

public class LgqLog {

    private static boolean ifShow=true;

    private static int sCurrentLogLevel = Log.DEBUG;
    private static String sPrefix = null;

    @IntDef({ Log.VERBOSE, Log.DEBUG, Log.INFO, Log.WARN, Log.ERROR })
    @Retention(RetentionPolicy.SOURCE)
    public @interface LogLevel {
    }

    public static void setIfShow(boolean b){
        ifShow = b;
    }

    /**
     * 初始化LogPlus,可选
     *
     * @param prefix Tag前缀,可以防止 RIL,IMS,AT,GSM,STK,CDMA,SMS 开头的log不会被打印
     * @param logLevel 打log等级
     */
    public static void init(String prefix, @com.licheedev.myutils.LogPlus.LogLevel int logLevel) {
        if (prefix != null) {
            prefix = prefix.trim();
            if (prefix.length() > 0) {
                sPrefix = prefix;
            }
        }
        sCurrentLogLevel = logLevel;
    }

    public static void v(@Nullable String tag, String msg, @Nullable Throwable tr) {
        log(Log.VERBOSE, tag, msg, tr);
    }

    public static void v(@Nullable String tag, String msg) {
        log(Log.VERBOSE, tag, msg, null);
    }

    public static void v(String msg, @Nullable Throwable tr) {
        log(Log.VERBOSE, null, msg, tr);
    }

    public static void v(String msg) {
        log(Log.VERBOSE, null, msg, null);
    }

    public static void d(@Nullable String tag, String msg, @Nullable Throwable tr) {
        log(Log.DEBUG, tag, msg, tr);
    }

    public static void d(@Nullable String tag, String msg) {
        log(Log.DEBUG, tag, msg, null);
    }

    public static void d(String msg, @Nullable Throwable tr) {
        log(Log.DEBUG, null, msg, tr);
    }

    public static void d(String msg) {
        if (ifShow)
        log(Log.DEBUG, null, "lgq-----  "+msg, null);
    }

    public static void i(@Nullable String tag, String msg, @Nullable Throwable tr) {
        log(Log.INFO, tag, msg, tr);
    }

    public static void i(@Nullable String tag, String msg) {
        log(Log.INFO, tag, msg, null);
    }

    public static void i(String msg, @Nullable Throwable tr) {
        log(Log.INFO, null, msg, tr);
    }

    public static void i(String msg) {
        if (ifShow)
        log(Log.INFO, null,"lgq-----  "+msg, null);
    }

    public static void w(@Nullable String tag, String msg, @Nullable Throwable tr) {
        log(Log.WARN, tag, msg, tr);
    }

    public static void w(@Nullable String tag, String msg) {
        log(Log.WARN, tag, msg, null);
    }

    public static void w(String msg, @Nullable Throwable tr) {
        log(Log.WARN, null, msg, tr);
    }

    public static void w(String msg) {
        log(Log.WARN, null, msg, null);
    }

    public static void e(@Nullable String tag, String msg, @Nullable Throwable tr) {
        log(Log.ERROR, tag, msg, tr);
    }

    public static void e(@Nullable String tag, String msg) {
        log(Log.ERROR, tag, msg, null);
    }

    public static void e(String msg, @Nullable Throwable tr) {
        log(Log.ERROR, null, msg, tr);
    }

    public static void e(String msg) {
        if (ifShow)
        log(Log.ERROR, null, "lgq-----  "+msg, null);
    }

    private static void log(int logLevel, String tag, String msg, Throwable tr) {

        if (logLevel < sCurrentLogLevel) {
            return;
        }
        StackTraceElement e = Thread.currentThread().getStackTrace()[4];
        String fileName = e.getFileName();
        int lineNum = e.getLineNumber();
        String methodName = e.getMethodName();

        StringBuilder sb = new StringBuilder();

        sb.append(methodName)
                .append('(')
                .append(fileName)
                .append(':')
                .append(lineNum)
                .append(')')
                .append(msg);

        msg = sb.toString();

        sb.delete(0, sb.length());

        // 注意,如果tag是"IMS"开头的(还有其他),log会不打印,所以加个"前缀_"
        // 参考这里 http://stackoverflow.com/a/36469141/5324526
        if (sPrefix != null) {
            sb.append(sPrefix).append('_');
        }

        if (tag == null || tag.length() == 0 || tag.trim().length() == 0) {
            String className = e.getClassName();
            int index = className.lastIndexOf('.') + 1;
            sb.append(className, index, className.length());
        } else {
            sb.append(tag);
        }

        tag = sb.toString();

        if (tr == null) {
            switch (logLevel) {
                case Log.VERBOSE:
                    Log.v(tag, msg);
                    break;
                case Log.DEBUG:
                    Log.d(tag, msg);
                    break;
                case Log.INFO:
                    Log.i(tag, msg);
                    break;
                case Log.WARN:
                    Log.w(tag, msg);
                    break;
                case Log.ERROR:
                    Log.e(tag, msg);
                    break;
            }
        } else {
            switch (logLevel) {
                case Log.VERBOSE:
                    Log.v(tag, msg, tr);
                    break;
                case Log.DEBUG:
                    Log.d(tag, msg, tr);
                    break;
                case Log.INFO:
                    Log.i(tag, msg, tr);
                    break;
                case Log.WARN:
                    Log.w(tag, msg, tr);
                    break;
                case Log.ERROR:
                    Log.e(tag, msg, tr);
                    break;
            }
        }
    }
}

全局常量

public static final String IN_RUNNING = "IN_RUNNING";
public static final String END_RUNNING = "END_RUNNING";

 

Toast工具类

public class ToastUtils {

    private static Toast sToast;

    //即时消息
    public static void show(Context context, String msg) {
        //判断是否第一次弹窗
        if (sToast==null)
        sToast = Toast.makeText(context, msg, Toast.LENGTH_SHORT);
        else
            sToast.setText(msg);
        sToast.show();
    }


}

 Log工具类

/**
 * 作者:created by meixi
 * 邮箱:15913707499@163.com
 * 日期:2019/4/17 10
 */
public class LgqLogutil {

    private static boolean ifShow=true;


    public static void setIfShow(boolean b){
        ifShow = b;
    }


    public static void i(String string){
        StackTraceElement[] s = Thread.currentThread().getStackTrace();
        String methodName = s[3].getMethodName();
        if (ifShow)
        Log.i("lgq",methodName+"----"+string);
    }

    public static void e(String string){
        StackTraceElement[] s = Thread.currentThread().getStackTrace();
        String methodName = s[3].getMethodName();
        if (ifShow)
            Log.e("lgq",methodName+"----"+string);
    }

}

 

获取当前方法名称:

 代码:

 

        StackTraceElement[] s = Thread.currentThread().getStackTrace();
        String methodName = s[3].getMethodName();
        LgqLogutil.i(methodName);
//        LgqLogutil.setIfShow(false);
        LgqLogutil.e(methodName);
04-17 10:22:43.521 20009-20009/? I/lgq: onResume----callActivityOnResume
04-17 10:22:43.522 20009-20009/? E/lgq: onResume----callActivityOnResume

 

mqtt客户端工具 paho mqtt客户端工具官网下载。一个好用mqtt测试工具。 立即下载

相关推荐

logutils工具类Android开发log日志打印封装完毕

logutils工具类Android开发log日志打印封装完毕。最好用的log打印日志的工具类之一。

MQTT快速使用

https://www.jianshu.com/p/e1915db8e5e2

join_null的博客 1023

Log框架(一个类,对Log进行封装)

Demo是以Gradle构建的项目。其中涉及到打Release包跟Debug包的时候对于日志输出的控制,在debug的时候开启日志输出,release的时候关闭日志输出

mqtt简单封装类

mqttmanager import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import com.licheedev.myutils.LogPlus; import com.simonfong.mqttdemo.listener.Mqtt...

fong_simon的博客 3255

Android日志打印类LogUtils

Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件。具体介绍详见:http://blog.youkuaiyun.com/finddreams/article/details/45569089

08-SD卡-TF卡硬件电路设计

SD卡-TF卡硬件电路设计

weixin_66510961的博客 8258

MQTT简单封装类-TypeScript实现

使用过C++和Nodejs的Mqtt封装类,之前使用过mosquitto的C语言库以及mosquittopp的C++库;另外nodejs中也有一个mqtt的模块。 TypeScript中封装MQTT客户端模块 安装mqtt模块 在TypeScript中使用mqtt模块十分简单,首先得用npm或者cnpm安装mqtt模块 npm install mqtt mq.ts 源代码 MQTT类 下面是使用TypeScript封装的mqtt的简单客户端,代码如下: import mqtt = require('m.

ccf19881030的专栏 1939

整合Springboot+MybatisPlus+达梦数据库

整合Springboot+MybatisPlus+达梦数据库,以及一些坑

波波的博客 6677

Android日志工具Log的使用

Androi中的日志工具类是Log(android.util.Log),这个类提供了如下5种方法来供我们打印日志。 用于打印那些最为繁琐的、意义最小的日志信息。对应级别是verbose,是Android日志里面级别最低的一种。 Log.d() 用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比verbose高一级。 Log.i() 用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮助你分析用户行为数据

振华OPPO的博客世界 1万+

Vmware Vcenter7.0证书web续期发生错误

生成证书,选择第三个(PS,如果没有域名的,一定要写IP,不然很容易卡在85%,服务不能起来)这里大概率可能是证书里面的FQDN和主机不匹配,又或者是主机解析FQDN有问题。vCenter _MACHINE_CERT快到期了,通过web界面更新证书失败。vSphere Client 版本 7.0.2.00200。登陆ssh到vcenter,重新生成证书。先关掉HA,不然证书管理会报错。第一步先这样,重新续订一下证书。

m0_74823595的博客 3944

京东商品数据爬取实战:用Selenium+代理IP绕过最新反爬机制(附完整代码)

本文深入解析京东商品数据采集技术,详细介绍了如何利用Selenium与智能反反爬策略绕过京东最新的反爬机制。通过实战案例和完整代码,帮助开发者掌握高效采集京东商品数据的方法,包括动态参数加密、行为验证识别及分布式采集架构设计等关键技术。

cc789的博客 1060

2024年Android最全Android Log工具类,Toast工具类,获取当前方法名称,2024年最新2024大厂Android面试经验

我这些话比较直接,可能会戳到一些人的玻璃心,但是我知道肯定会对一些人起到点醒的效果的。因为你的技术体系并不系统,是零碎的,散乱的。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。而现在随着跨平台开发,混合式开发,前端开发之类的热门,Android开发者需要学习和掌握的技术也在不断的增加。如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。

2401_84563438的博客 922

Windows系统3D Gaussian Splatting环境搭建全攻略:从零开始到成功运行

本文详细介绍了在Windows系统上搭建3D Gaussian Splatting环境的完整流程,包括CUDA 12.6安装、Anaconda环境配置、代码获取与依赖安装等关键步骤。针对Windows平台特有的环境配置问题,提供了实用的解决方案和常见错误排查方法,帮助开发者快速实现3D Gaussian Splatting的成功运行。

weixin_30832143的博客 454

Android学习笔记之——获取WIFI的RSSI以及名称

本博文为本人学习Android开发以来第一次实例编写。点击一个按钮,获取当前的wifi名称以及接受的信号强度。 代码 首先创建一个工程文件命名为WifiTest 定义界面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" ..

gwpscut的博客 4940

OpenClaw 快速安装与本地应用实战 —— 每一步都有截图加详细说明,本地AI助手,让打工人也有下属

《OpenClaw 2026开源智能体框架10分钟快速部署指南》摘要:本文提供OpenClaw最新版全平台部署方案,重点解决三大核心问题:1)环境配置优化,通过一键脚本实现3-8分钟快速安装(含国内镜像加速方案);2)初始化配置详解,包含大模型绑定(智普AI/本地模型)与5个高频技能安装;3)实战演示文件自动整理任务。同时总结6类常见故障解决方案,涵盖权限、端口占用等典型问题,确保用户从安装到首个自动化任务落地全程无障碍。特别强调Windows需管理员权限、禁用中文路径等关键注意事项,实现"安装即

weixin_43538316的博客 808

基于 YOLOv26 的金属表面缺陷检测系统:智能视觉质检方案

摘要: 基于YOLOv26的金属表面缺陷检测系统采用深度学习技术,实现对划痕、裂纹、腐蚀等8类常见缺陷的自动化检测。系统通过数据增强预处理和YOLOv26模型的高精度识别能力,具备多类别分类、实时推理和强鲁棒性特点,适用于不同金属材质与光照条件。架构包含数据采集、预处理、YOLOv26检测和后处理模块,代码实现采用PyTorch框架,支持训练数据增强与标准化处理,为工业质检提供高效智能解决方案。

一键难忘的博客 589

android 好用的log,GitHub - liompei/Zx: Android最好用的log打印和Toast输出工具

ZxLogZxLog更方便的打印日志,Toast参考KLog做了一些优化支持显示行号支持显示Log所在函数名称支持无Tag快捷打印支持在Android Studio开发IDE中,点击函数名称,跳转至Log所在位置支持Json,XML字符串打印支持无限制字数打印支持全局Tag支持ToastAndroid Studiodependencies {compile 'com.liompei:zxlog:1...

weixin_39580950的博客 298

软考高级-系统架构设计师 知识点整理 (一篇就够了 建议收藏)

软考高级-系统架构设计师知识点整理---十万字总结,助你通过高级

片言可决讼,半纸能缚龙 7344

Android 封装的工具类

是对android log的封装,封装后 可以设置显示级别。对访问webservice 接口的请求封装。针对AsyncTask被弃用的替代。Android 创建本地数据库。使用和正常log使用一样。

xianKOG的博客 1290

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

又被Android的Log输出气到吐血身亡了!!!

常在河边走,哪有不混鞋!常在Android开发,哪有不遇到奇怪Bug的,但是这Bug也太奇葩了吧,都不知道什么原因,真是气死人不偿命! 事情是怎么回事呢?我有一个类叫IMSDroid,继承自Application,做Android开发的都知道这个类干嘛用的了,在它的onCreate方法中进行log输出:Log.i(“IMSDroid”, “onCreate”) public class IMSDr...

Android菜鸟的专栏 634

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android 工具类

转自:http://blog.youkuaiyun.com/lmj623565791/article/details/38965311 实用的工具类: 1.Log统一管理类 2.Toast统一管理类 3.SharedPreferences封装类SPUtils 4.单位转换类(dp转px;sp转px;px转dp;px转sp) 5.SD卡相关辅助类 6.屏幕相关辅助类(获取屏幕高度宽度;...

代码界的萌新 363

AndroidUtilCode 最强大的工具类

一、前言: AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 APIs 可以大大提高开发效率,如今它主要包括两部分模块,其一是主工具类模块:utilcode,其中的工具类是开发中常用到的;其二是子工具类模块:subutil,它包含的工具类并不是很常用,它的出现是为了防止主工具类的臃肿。 二、使用: ①utilcode使用: 1. 依赖: implementation 'com.blankj:ut

chuyouyinghe的专栏 1万+

android 快速开发(二)辅助类的使用:加快开发速度

本人从事Android开发已经有十余年,算是一名资深的移动开发架构师了吧。根据我的观察发现,对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。所以在此将我十年载,从萌新小白一步步成长为Android移动开发架构师的学习笔记,从Android四大组件到手写实现一个架构设计,我都有一一的对应笔记为你讲解。当然我也为你们整理好了百度、阿里、腾讯、字节跳动等等互联网超级大厂的历年面试真题集锦。

2401_84009130的博客 780

android 快速开发(二)辅助类的使用,kotlin枚举类反射

Log.e(TAG, msg); } // 同理… } T(Toast) package com.yqy.yqy_abstract.utils; import android.content.Context; import android.widget.Toast; public class T { /** 是否展示,在不需要的时候设置为false */ public static boolean isShow = true; public static void showShort(Context c

m0_64603776的博客 626
上一篇: Cannot resolve symbol 'R',Failed to resolve: constraint-layout
下一篇: Android Lambda 表达式使用实例,->
meixi_android
博客等级 码龄11年 306粉丝 383原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值