日志的重要性

平时我们debug模式开发项目时,我们需要打印出debug级别的日志,这样在正式发布版本上运行的时候,这些debug日志是不会出现在日志文件中的,日志中记录的是比他更高级别的info,error日志。下面我们就使用log4j来为我们app增加日志打印功能,并保存到本地,供我们后期分析 。

1,需要2个jar包

1,log4j官方包
官方下载连接
2,安卓对log4j的支持包
请下载本篇项目代码

二,写日志类APPLogger

Log4j里面有个Logger类,使用这个类代替安卓中的Log类来打印日志,log4j会将日志同时写入配置好的文件中.
下面,重写一个包装类,来封装Logger,包括配置和打印方法。


import org.apache.log4j.Level;
import org.apache.log4j.Logger;import de.mindpipe.android.logging.log4j.LogConfigurator;public class ViLogger {//典型的单例模式写法private static Logger instance;static {instance = Logger.getLogger(ViLogger.class);}private ViLogger() {}/*** 配置日志* 日志文件目录等** @param compile_level* @param filename*/public static void init(String compile_level, String filename) {LogConfigurator configurator = new LogConfigurator();configurator.setFileName(filename);//设置编译级别,可以根据当前模式来设置if (compile_level.equals("debug"))//debug及以上级别的消息会被打印configurator.setRootLevel(Level.DEBUG);else//info及以上级别的消息会被打印configurator.setRootLevel(Level.INFO);configurator.setLevel("org.apache", Level.ERROR);//%p 表示日志语句的优先级//%c 日志信息所在的类名//%m%n 表示日志信息的内容configurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");configurator.setMaxFileSize(1024 * 1024 * 1);configurator.setMaxBackupSize(3);configurator.setImmediateFlush(true);//很重要的一步,配置configureconfigurator.configure();}public static void d(String msg) {instance.debug(msg);}public static void i(String msg) {instance.info(msg);}public static void e(String msg) {instance.error(msg);}
}

三,在application类中初始化日志类

package com.raise.wind.log4jdemo;import android.app.Application;import com.raise.wind.log4jdemo.logger.APPLogger;/*** Created by yu on 2015/7/18.*/
public class APP extends Application {@Overridepublic void onCreate() {String logFilePath = ...;
//        参数可以配置在strings.xml中,这样就可以自动的区分debug版和release版
//        APPLogger.init(getString(R.string.compile_level));ViLogger.init(getString(R.string.compile_level),logFilePath);}
}

ok,最简单的日志功能成功配好了,在程序中使用:

ViLogger.i("测试日志debug");

记得加入权限:

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

日志文件我没有写txt为后缀,用记事本打开即可。

2015-07-18 14:03:05,787 DEBUG [logger.APPLogger]-[18] 测试日志debug
2015-07-18 14:03:05,796 ERROR [logger.APPLogger]-[19] 测试日志error

如果使用代码混淆的话,请记得加入这两句:


-dontwarn org.apache.log4j.**
-keep class org.apache.log4j.**

ps:日志打印出不出的bug,多半是文件没有创建成功。

点我下载源码

Android_运用log4j打印日志相关推荐

  1. slf4j+log4j打印日志,控制台无日志输出

    slf4j+log4j 实现日志打印 项目场景: 今天看以前的项目,运行起来报错,项目日志对于项目是很重要的,但是控制台没有打印出来日志,运行起来报错的问题先放一放,先把日志的问题解决了,我项目中有l ...

  2. 在maven web项目中配置log4j打印日志及Mybatis sql语句

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wei542657623/article/details/51591736 1 添加依赖 在pom.x ...

  3. (完美解决)java 集成解决引入百度智能云bos包,出现log4j打印日志过多问题【com.baidubce:api-explorer-sdk】

    SDK日志 BOS Java SDK发布版本中增加了logback作为slf4j的实现,如工程中没有自己的实现可以直接用,如果工程中有其他的如log4j则可以替代. 默认日志: 如使用默认的logba ...

  4. 如何解决log4j打印日志出现中文乱码

    最近在项目部署后发现在tomcat窗口中打印出的日志中中文是乱码的,因为在开发环境中是没有乱码出现的,所以判断是因为服务器编码导致日志在窗口中显示成了乱码,还好日志文件中打印出来的中文不是乱码,但是窗 ...

  5. log4j 压缩日志_Spring Boot 日志各种使用姿势,是时候捋清楚了!

    来自公众号:江南一点雨 1. Java 日志概览 1.1 总体概览 1.2 日志级别 1.3 综合对比 1.4 最佳实践 2. Spring Boot 日志实现 2.1 Spring Boot 日志配 ...

  6. mybatis结合log4j打印SQL日志

    mybatis结合log4j打印SQL日志 1.Maven引用jar包 默认的mybatis不能打印出SQL日志,不便于查看调试,需要结合log4jdbc-log4j2就可以完整的输入SQL的调试信息 ...

  7. log4j无法打印日志的问题

    http://www.webspherechina.net/club/thread-11960-1-1.html 这个问题提出来一直没人解决,最后找到毛病了,发在这里                 ...

  8. mysql log4jlogger_mybatis结合log4j打印SQL日志

    mybatis结合log4j打印SQL日志 1.Maven引用jar包 默认的mybatis不能打印出SQL日志,不便于查看调试,须要结合log4jdbc-log4j2就能够完整的输入SQL的调试信息 ...

  9. log4j 打印线程号配置_Log4J日志整合及配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

最新文章

  1. LAMP--Apache 禁止指定 user_agent
  2. 微服务架构下 CI/CD 如何落地
  3. js映射 nginx_浅析nginx刚刚发布的JavaScript能力nginScript
  4. pandas 读写 excel
  5. linux中的进程权限是,Linux中权限,进程,服务的简单操作
  6. Bailian2747 Bailian4146 数字方格【暴力】
  7. GANs之信息量、信息熵、交叉熵、KL散度、JS散度、Wasserstein距离
  8. 锋利的jQuery--Ajax(读书笔记四)
  9. 计算机网络设计校园网实验报告,计算机网络综合设计性实验报告-校园网网络构建方案设计和实现..doc...
  10. c语言setw,在C++中,setw(int n)
  11. PL3376C-ASEMI电源管理芯片PL3376C
  12. 06 第三方之短信封装
  13. C#屏蔽Alt+F4组合键
  14. 微信小程序的动态显示字体颜色
  15. Yii Framework 开发教程(30) Zii组件-ListView 示例
  16. 一个集成ssh和vcn和其他的工具MobaXterm
  17. 构造方法,接口有无构造方法
  18. 腾讯视频的地址解析下载
  19. 网站绑定域名后不能用IP直接访问了?
  20. 计算机考研A区211大学,三本学生调剂A区211大学,自己的一些调剂经验供大学参考...

热门文章

  1. 什么是范数(Norm),其具有哪些性质
  2. LeetCode 827 最大人工岛 题解
  3. Linux 查阅命令帮助文档
  4. 吴伯凡-认知方法论-找到自己的洞穴
  5. umi(3.0.5)版本之二 约定式路由
  6. c#网络通信框架networkcomms内核解析之七 数据包创建器(PacketBuilder)
  7. Ajax系列之实现步骤
  8. FL Studio for 21 Windows版 Producer Edition v21.0.3 Build 3517官方中文免费终极解锁版下载
  9. 使用EXCEL计算并绘制EMA指标
  10. vue 字母或数字不会自动换行