android log开源库 Zprint ,控制台点击日志跳转到输出日志代码处,存储日志到本地文件

Zprint是一款专为安卓开发者设计的日志工具库,它支持控制台点击日志跳转到代码处,实时存储日志到本地文件,并允许在日志代码中直接操作输出数据,无需额外数据控制。本文详细介绍其使用方法及权限设置。

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

很长时间没写关于android的东西了,最近接触android的少了。因为公司不需要我兼任android开发了。然后很快又要换工作啦。到了新东家,android收不到接触就更少啦。 还是把自己平时用的log工具开源 变成一个库,造福android开发者吧。

Zprint

说一下优点:

  1. 控制台点击日志跳转到输出日志代码处。
  2. 打印日志的同时,存储日志到本地文件
  3. 打印日志的时候,在日志代码里面就可以操作最终输出到控制台的数据。不需要外部的操作数据,来控制打印的日志。

使用教程

添加依赖

在项目 root build.gradle 里面添加:

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

在module build.gradle里面添加依赖:

	dependencies {
	        implementation 'com.github.planitian:Zprint:1.1.1'
	}

使用实例

首先,note如果你需要打印日志到本地文件,必须获取读写权限。

一 首先在AndroidManifest.xml
声明权限
在这里插入图片描述

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

android 6.0以后还需要动态申请权限:

    /**
     * 检查有无权限
     */
    private void checkPermission() {
        //先检测有没有权限
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PERMISSION_DENIED) {
            //请求权限  REQUEST_CODE是自己定义的请求码 这样才能知道 是不是自己申请的
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
        }
    }


    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //判断是否是自己的请求
        if (requestCode == REQUEST_CODE) {
            //判断是否获取权限
            if (grantResults[0] == PERMISSION_GRANTED) {
                Toast.makeText(this, "已经获取读取权限", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "获取读取权限  失败", Toast.LENGTH_SHORT).show();
            }
        }
    }

在activity 的onCreate周期里面 调用checkPermission()方法就行。

方法说明

在这里插入图片描述

对于 startWrite 方法,可以放在在任何地方多次调用,每次调用会覆盖上一次的设定。

代码示例

package com.admin.plani.zprintpro;

import android.Manifest;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import com.admin.plani.zprintlibrary.Zprint;

import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;

public class MainActivity extends AppCompatActivity {

    public int REQUEST_CODE = 10;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //检查权限
        checkPermission();
        //测试
        te();
    }

    void te() {
        //开启打印
        //设定 日志文件存储到那个位置  note 这句代码可以放在任何地方,只要在打开写入日志文件功能以前。
        Zprint.startWrite(Environment.getExternalStorageDirectory() + "/plani/one.txt");
        //打印error等级的日志  打印完这句日志,会变成debug等级
        Zprint.level = Zprint.Level.ERROR;
        //没有key的 一个参数 操作
        Zprint.log("nokey", s -> System.out.println(s.toUpperCase()));

        Zprint.level = Zprint.Level.WARN;
        Zprint.log("warn");

        Zprint.log("key", "o", s -> {
            System.out.println("one " + s);
        }, "t", s -> {
            System.out.println("two " + s);
        });

        Zprint.log("ww", s -> {
            System.out.println("one " + s);
        }, "tttt", s -> {
            System.out.println("two " + s);
        });

    }


    /**
     * 检查有无权限
     */
    private void checkPermission() {
        //先检测有没有权限
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PERMISSION_DENIED) {
            //请求权限  REQUEST_CODE是自己定义的请求码 这样才能知道 是不是自己申请的
            requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
        }
    }


    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //判断是否是自己的请求
        if (requestCode == REQUEST_CODE) {
            //判断是否获取权限
            if (grantResults[0] == PERMISSION_GRANTED) {
                Toast.makeText(this, "已经获取读取权限", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "获取读取权限  失败", Toast.LENGTH_SHORT).show();
            }
        }
    }

}

最后个人推荐可以在application的onCreate周期里面设定输出日志到文件功能。
在这里插入图片描述

项目地址

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值