Android Log工具类

一、代码

public class LogUtils {

    private static boolean LOG_DEBUG = true;
    private static String LOG_TAG = "Log";
    private static final SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public static void v(String text){
        if (LOG_DEBUG && !TextUtils.isEmpty(text)){
            Log.i(LOG_TAG,text);
            // writeToFile(text);
        }
    }

    public static void d(String text){
        if (LOG_DEBUG && !TextUtils.isEmpty(text)){
            Log.e(LOG_TAG,text);
            // writeToFile(text);
        }
    }

    public static void i(String text){
        if (LOG_DEBUG && !TextUtils.isEmpty(text)){
            Log.i(LOG_TAG,text);
            // writeToFile(text);
        }
    }

    public static void w(String text){
        if (LOG_DEBUG && !TextUtils.isEmpty(text)){
            Log.i(LOG_TAG,text);
            // writeToFile(text);
        }
    }

    public static void e(String text){
        if (LOG_DEBUG && !TextUtils.isEmpty(text)){
            Log.e(LOG_TAG,text);
            // writeToFile(text);
        }
    }

    /**
     * 将log写入文件中
     * @param text
     */
    private static void writeToFile(String text){
        // 开始写入
        FileOutputStream fileOutputStream =null;
        BufferedWriter bufferedWriter = null;
        try {
            // 文件路径
            String fileRoot = Environment.getExternalStorageDirectory().getPath() + "/Meet/";
            String fileName = "Meet.log";
            // 信息:时间 + 内容
            String log = mSimpleDateFormat.format(new Date()) + " " + text + "\n";
            // 检查父路径是否存在
            File fileGroup = new File(fileRoot);
            // 创建父路径
            if (!fileGroup.exists()) {
                // 父路径不存在则创建
                fileGroup.mkdirs();
            }
            fileOutputStream = new FileOutputStream(fileRoot + fileName,true);
            // 编码问题,使用GBK才能正确的传入中文
            bufferedWriter = new BufferedWriter(
                    new OutputStreamWriter(fileOutputStream, Charset.forName("gbk"))
            );
            bufferedWriter.write(log);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //释放
            if (bufferedWriter != null) {
                try {
                    bufferedWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

二、Log等级介绍

Log常用的方法有以下5个:Log.v() 、Log.d() 、Log.i() 、Log.w()、Log.e() 。按照日志级别从高到低为ERROR、WARN、INFO、DEBUG、VERBOSE。其对应的Log定义在system层。

1、各种Log方法的介绍

1.1、Log.v 的输出颜色为黑色的,输出大于或等于VERBOSE日志级别的信息。

1.2、Log.d的输出颜色是蓝色的,输出大于或等于DEBUG日志级别的信息。

1.3、Log.i的输出为绿色,输出大于或等于INFO日志级别的信息。
 
1.4、Log.w的输出为橙色, 输出大于或等于WARN日志级别的信息。
 
1.5、Log.e的输出为红色,仅输出ERROR日志级别的信息。

2、各种Log级别的介绍

2.1.VERBOSE
Verbose就是冗长啰嗦的。通常表达开发调试过程中的一些详细信息,用Log.v()输出,不过滤地输出所有调试信息。是最低级的Log可以不用管。

2.2.DEBUG
Debug来表达调试信息。用Log.d()输出,能输出Debug、Info、Warn、Error级别的Log信息。

2.3.INFO
Info来表达一些信息。用Log.i()输出,能输出Info、Warn、Error级别的Log信息。

2.4.WARN
Warn表示警告,但不一定会马上出现错误,开发时有时用来表示特别注意的地方。用Log.w()输出,能输出Warning、Error级别的Log信息。

2.5.ERROR
Error表示出现错误,是最需要关注解决的。用Log.e()输出,能输出Error级别的Log信息。

注意: Info、Warn、Error等级的Log在普通调试中不随意滥用,存在发布版本中。在开发调试版本中,才会显示全部等级。

三、注意事项

1、写入文件需要添加写入权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2、在Android 11 中无法正常写入文件,请参阅Android 11 中的存储机制更新

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android Hai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值