移动开发中的日志管理

在Android移动开发中,日志为我们提供了很多便利。但是应用程序发布后又不想让应用程序输出日志信息,就可以设计一个日志开关对应用中的日志做统一的管理。下面这个简单的日志类就完成了这样的功能,有需要的朋友可以参考。

package com.hitech.jni4cppdemo.utils;

public class Log {

    // 应用名称
    private static final String TAG = "ResXtrojan";
    // 日志开关
    private static boolean switches = false;
    // 日志级别
    private static int level = android.util.Log.VERBOSE;

    public static void v(Object log) {
        if (switches) {
            if (level <= android.util.Log.VERBOSE) {
                if (functionName() != null) {
                    android.util.Log.v(TAG, functionName() + log);
                } else {
                    android.util.Log.v(TAG, log.toString());
                }
            }
        }
    }

    public static void d(Object log) {
        if (switches) {
            if (level <= android.util.Log.DEBUG) {
                if (functionName() != null) {
                    android.util.Log.d(TAG, functionName() + log);
                } else {
                    android.util.Log.d(TAG, log.toString());
                }
            }
        }
    }

    public static void i(Object log) {
        if (switches) {
            if (level <= android.util.Log.INFO) {
                if (functionName() != null) {
                    android.util.Log.i(TAG, functionName() + log);
                } else {
                    android.util.Log.i(TAG, log.toString());
                }
            }
        }
    }

    public static void w(Object log) {
        if (switches) {
            if (level <= android.util.Log.WARN) {
                if (functionName() != null) {
                    android.util.Log.w(TAG, functionName() + log);
                } else {
                    android.util.Log.w(TAG, log.toString());
                }
            }
        }
    }

    public static void e(Object log) {
        if (switches) {
            if (level <= android.util.Log.ERROR) {
                if (functionName() != null) {
                    android.util.Log.e(TAG, functionName() + log);
                } else {
                    android.util.Log.e(TAG, log.toString());
                }
            }
        }
    }

    private static String functionName() {
        StackTraceElement[] sts = Thread.currentThread().getStackTrace();
        if (sts == null) {
            return null;
        }
        for (StackTraceElement st : sts) {
            if (st.isNativeMethod()) {
                continue;
            }
            if (st.getClassName().equals(Thread.class.getName())) {
                continue;
            }
            if (st.getClassName().equals(Log.class.getName())) {
                continue;
            }
            return "at " + st.getFileName() + ", line " + st.getLineNumber()
                    + ", method:" + st.getMethodName() + ", ";
            // return "Thread:" + Thread.currentThread().getName() + "; Source:"
            // + st.getFileName() + "\nAt line:" + st.getLineNumber()
            // + "; Method:" + st.getMethodName();
        }
        return null;
    }
}

移动开发中的日志管理

时间: 2024-08-29 04:46:25

移动开发中的日志管理的相关文章

SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志

SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志 作者:Tony Davis,2012/01/27 系列 本文是进阶系列的一部分:SQL Server中事务日志管理的步骤 当事情进展顺利时,无需特别注意事务日志的作用或工作方式.您只需要确信每个数据库都有正确的备份机制.当出现问题时,了解事务日志对于采取纠正措施很重要,特别是在需要紧急恢复数据库的时间点时!Tony Davis给出了每个DBA都应该知道的正确的细节级别. 在此级别中,我们将回顾在完全恢复模式下工作时进行日志备

十七周-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志

SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 By Tony Davis, 2012/01/27 http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 该系列 文是SQL Server中"Stairway系列:事务日志管理的阶梯"的一部分 当事情进展顺利时,不需要特别意识到事务日志的作用或工作原理.你只需要确信每个数据库都有正确的备份机制.当事情出错时,对事务日志的理解对于采取纠正措施

log4js-Node.js中的日志管理模块使用与封装

开发过程中,日志记录是必不可少的事情,尤其是生产系统中经常无法调试,因此日志就成了重要的调试信息来源. Node.js,已经有现成的开源日志模块,就是log4js,源码地址:点击打开链接 项目引用方法: npm install log4js 1.配置说明(仅以常用的dateFile日志类型举例,更多说明参考log4js-wiki): { "appenders": [ // 下面一行应该是用于跟express配合输出web请求url日志的 {"type": "

Java中的日志管理

日志是应用程序运行中不可缺少的一部分,JAVA中有很多已经成熟的方案,尽管记录日志是应用开发中并不可少的功能,在 JDK 的最初版本中并不包含日志记录相关的 API 和实现.相关的 API(java.util.logging 包,JUL)和实现,直到 JDK 1.4 才被加入.因此在日志记录这一个领域,社区贡献了很多开源的实现.其中比较流行的包括 log4j 及其后继者 logback.除了真正的日志记录实现之外,还有一类与日志记录相关的封装 API,如 Apache Commons Loggi

Cocos2d-x开发中C++内存管理

由于开始并没有介绍C++语言,C++的内存管理当然也没进行任何的说明,为了掌握Cocos2d-x中的内存管理机制,是有必要先了解一些C++内存管理的知识.C++内存管理非常复杂,如果完全地系统地介绍可能需要一本书的篇幅才能解释清楚.这里只给大家介绍C++内存管理最为基本的用法. 内存分配区域创建对象需要两个步骤:第一步,为对象分配内存,第二步,调用构造函数初始化内存.在第一步中对象分配内存时候,我们可以选择几个不同的分配区域,这几个区域如下:栈区域分配.栈内存分配运算内置于处理器的指令集中,效率

Unity游戏开发中的内存管理_资料

内存是手游的硬伤——Unity游戏Mono内存管理及泄漏http://wetest.qq.com/lab/view/135.html 深入浅出再谈Unity内存泄漏http://wetest.qq.com/lab/view/150.html 这一次,我优化了37%的内存http://wetest.qq.com/lab/view/147.html Unity项目资源加载与管理http://wetest.qq.com/lab/view/124.html Android应用内存泄露分析.改善经验总结h

iOS开发中的内存管理

一.为什么要进行内存管理 系统资源有限,iOS会为每个运行的程序分配30M的内存,超过20M会收到内存警告,超过30M将会终止应用程序.因此,要及时回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等,以保证应用程序能正常运行. 二.需要管理的内存 应用程序在运行过程中,会占用一定栈空间和堆空间,也就是说,应用程序运行过程中的数据,有的是放在栈中,有的是放在堆中.栈中的数据由系统维护,无需开发人员来管理,而堆中的数据需要程序员来维护. 堆空间由开发人员请求分配的,比如开发人员发

开发中的代码管理工具梳理

参考:https://blog.csdn.net/growing_tree/article/details/44084179 参考:https://blog.csdn.net/zhhelnice/article/details/52385285 参考:https://blog.csdn.net/growing_tree/article/details/44084179 代码管理工具有很多,看了很多文章,有必要梳理一下. 一.为什么使用代码管理工具? 就像zhhelnice的博客在博客里总结的那样

Springboot中的日志管理

本案例中可以了解,怎么配置日志的输出路径,输出格式(比如说zip格式),按日期进行划分(今天的日志输出为一个文件,明天的日志输出到另一个文件),在按日期划分的同时又按文件大小划分(比如说每天的日志记录很多,希望一个日志文件为5GB...),上面的功能,看完这篇都能实现.(参考链接超有用,建议直接下拉打开链接) Slf4j 日志管理的抽象接口 Log4j,log4j2,logback,日志管理框架,日志管理实现 Springboot中pom.xml,若引入了web的起步依赖,不需要再引入日志管理相