在android中配置 slf4j + log4j 日志记录框架
需求:
在项目开发中,需要记录 操作日志 。起初自己写了个简单的日志记录文本写入到文本的方法,后来随着项目的膨胀,需要考虑更多的操作,开始考虑性能问题。
实现:
考虑使用 slf4j + log4j 框架来实现。slf4j 是日志记录的一个facade,支持多种日志框架。log4j是个很优秀的日志记录框架。
实现:
下载类库:
先到各主站点下载类库
slf4j 网址 :http://www.slf4j.org/download.html
log4j网址: http://logging.apache.org/log4j/1.2/download.html
要再android中使用,还需要一个配置工具:http://code.google.com/p/android-logging-log4j/downloads/list 国内可能打不开,本文后的示例中包含有
需要使用的类库:
你需要在下载到的类库中找到下面的jar包,具体请忽略版本号部分,在你读到本文的时候可能有了更新的版本。
android-logging-log4j-1.0.3.jar 在android中配置log4j时需要使用这个类库。
log4j-1.2.17.jar log4j的主功能包,这个文件有460k之大,面向大众用户的,需要考虑app包大小的慎重考虑本文的日志方式。
slf4j-api-1.7.12.jar sjf4j的主功能包。
slf4j-log4j12-1.7.12.jar 绑定包,将sff4j和log4j绑定在一起,这样你才能使用slf4j的调用日志的方式来调动log4j来记录日志
实现代码
添加上面的几个类库引用到你的项目中,一般拷贝到libs文件夹下。
自定义个application类,继承自 Application,在onCreate启动时配置日志,代码如下:
package vir56k.logdemo; import android.app.Application;
import android.os.Environment; import org.apache.log4j.Level;
import org.apache.log4j.Logger; import java.io.File; import de.mindpipe.android.logging.log4j.LogConfigurator; /**
* Created by zhangyunfei on 15/9/9.
*/
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate(); configLog("log");
Logger log = Logger.getLogger(MyApp.class);
log.info("My Application Created"); } private void configLog(String logFileNamePrefix) {
LogConfigurator logConfigurator = new LogConfigurator();
logConfigurator.setFileName(Environment.getExternalStorageDirectory()
+ File.separator + "logdemo" + File.separator + "logs"
+ File.separator + (logFileNamePrefix == null ? "" : logFileNamePrefix) + "log4j.txt");
logConfigurator.setRootLevel(Level.DEBUG);
logConfigurator.setLevel("org.apache", Level.ERROR);
logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");
logConfigurator.setMaxFileSize(1024 * 1024 * 2);
logConfigurator.setImmediateFlush(true);
logConfigurator.configure();
}
}
写记录日志 的代码:
实例化
private static final Logger logger = LoggerFactory.getLogger(MainActivity.class);
执行
logger.debug("Some log message. Details: {}", "debug 输出");
我在github上放了我写的demo,地址如下: https://github.com/vir56k/demo
参考:
http://www.cnblogs.com/niutouzdq/archive/2013/12/24/3489062.html
http://cache.baiducontent.com/c?m=9d78d513d99d1cfa5eb5837e7c5789320e55f06564c0d0642c88c508ce3f0d550026bdb47d645646c4c40f7a1cff1701bfe73605340721a09bbfd91782a6d76f64d379732c1c9b114c8e4cb28a0076877bc147e2a51ee6b9f33093acd1d0dc5754c1540f7d8af18f5d1d&p=8b2a9715d9c342ab43b7d16815538c&newp=9c63c64ad4df11a058ee90664f4fcd231610db2151d4d01163&user=baidu&fm=sc&query=Log4J+slf4j+android&qid=a779aae80001b5b4&p1=8
http://stackoverflow.com/questions/2915150/log4j-support-in-android
http://stackoverflow.com/questions/2915150/log4j-support-in-android
在android中配置 slf4j + log4j 日志记录框架的更多相关文章
- ELK环境配置+log4j日志记录
ELK环境配置+log4j日志记录 1. 背景介绍 在大数据时代,日志记录和管理变得尤为重要. 以往的文件记录日志的形式,既查询起来又不方便,又造成日志在服务器上分散存储,管理起来相当麻烦, 想根据一 ...
- 使用 logback + slf4j 进行日志记录
此处主要介绍maven web工程下如何使用 logback + slf4j 进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在).La ...
- 扔掉log4j、log4j2,自己动手实现一个多功能日志记录框架,包含文件,数据库日志写入,实测5W+/秒日志文件写入,2W+/秒数据库日志写入,虽然它现在还没有logback那么强大
讲到log4j,现在国外基本是没有开发者用这个框架了,原因大致有几点,1.功能太少:2.效率低下:3.线程锁bug等等等各种莫名其妙的bug一直都没解决. 其实最重要的是log4j的作者自己也放弃了l ...
- (网页)Java日志记录框架Logback配置详解(企业级应用解决方案)(转)
转自CSDN: 前言 Logback是现在比较流行的一个日志记录框架,它的配置比较简单学习成本相对较低,所以刚刚接触该框架的朋友不要畏惧,多花点耐心很快就能灵活应用了.本篇博文不会具体介绍Logbac ...
- Hibernate 使用log4j日志记录
日志记录使程序员能够将日志详细信息永久写入文件.这是我们以后在开发当中非常重要的一步. Hibernate使用log4j日志记录,我们需要以下几个步骤: 1.导入jar包: (1)这是hibernat ...
- Hibernate使用Log4j日志记录(使用xml文件)
日志记录使程序员能够将日志详细信息永久写入文件. Log4j和Logback框架可以在hibernate框架中使用来支持日志记录. 使用log4j执行日志记录有两种方法: 通过log4j.xml文件( ...
- [转]asp.net5中使用NLog进行日志记录
本文转自:http://www.cnblogs.com/sguozeng/articles/4861303.html asp.net5中使用NLog进行日志记录 asp.net5中提供了性能强大的日志 ...
- Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验
Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...
- Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验
Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...
随机推荐
- nodejs 最受欢迎的orm sequelize
传送门 # 视频教程 https://nodelover.me/course/sequelize/ # 官方文档 http://docs.sequelizejs.com/manual/tutorial ...
- mac 利用 sshpass 自动登录
mac 利用 sshpass + 配置文件 实现自动登录 使用方式 https://github.com/vipzhicheng/go 参见此项目 其实原理也就是 脚本 读取配置文件 匹配 参数或 ...
- vue-cli项目配置图解
配置vue项目机构步骤1.搭建环境:node.npm2.安装vue脚手架工具:npm install -g vue-cli3.初始化项目:vue init webpack vuedemo(“vuede ...
- hdu Constructing Roads (最小生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1102 /************************************************* ...
- 行为类模式(九):策略(Strategy)
定义 针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化. UML 优点 策略模式提供了管理相关的算法族的办法.策 ...
- 未能为数据库 '*'中得对象'*'分配空间,因文件组'PRIMARY'已满
服务器使用mssqlserver2005,最近经常出现无法新增信息错误,查看日志,发现严重错误提示,内容大致为: 无法为数据库 'weixin_main' 中的对象 'dbo.wx_logs'.'PK ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- 【ARM】定时器
PWM定时器 PWN:脉冲宽度调制 每个定时器都有一个专用的由定时器时钟驱动的16位递减计数器.当递减计数器的计数值达到0的时候,就会产生定时中断请求来通知CPU定时器操作完成.当定时器递减计数器达到 ...
- 【消息】linux之消息队列
1.机制 消息队列的运行方式与命名管道非常相似. 欲与其他进程通信的进程只需要将消息发送到消息队列中,目的进程就从消息队列中读取需要的消息. 2.源码 1)发送方 //msg_send.c #in ...
- 基于bootstrup3全屏宽度的响应式jQuery幻灯片特效
这是一款效果非常酷的基于Bootstrup3.x和HTML5的响应式全屏宽度jQuery幻灯片特效.该幻灯片能自适应屏幕的宽度,使用HTML5的data属性来指定幻灯片所需的各种属性.使用简单,界面美 ...