需求:
在項目開發中,需要記錄 操作日志 。起初自己寫了個簡單的日志記錄文本寫入到文本的方法,后來隨着項目的膨脹,需要考慮更多的操作,開始考慮性能問題。
實現:
考慮使用 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