本文轉載自http://blog.csdn.net/angcyo/article/details/51405301
一個好的程序, 完全可以從Log中, 解決問題.
一個好的Log系統,是一個程序的關鍵.
本文介紹的是Logback-Android, 這個庫,可以將Log寫入到File,寫入到數據庫,寫入到Email,寫入到網絡.
當然,最基本的Logcat窗口完美輸出,是最基本的;
開源地址: https://github.com/tony19/logback-android
slf4j地址: http://www.slf4j.org/
slf4j API文檔: http://www.slf4j.org/api/
如果你需要了解更多,請自行百度(谷歌);
logback 官方WIKI: https://github.com/tony19/logback-android/wiki
logback API文檔: http://tony19.github.io/logback-android/doc/1.1.1-4/
推薦閱讀: http://blog.csdn.net/haidage/article/details/6794529
1:Module中的build.gradle 添加以下依賴
dependencies {
...
compile 'org.slf4j:slf4j-api:1.7.21'
compile 'com.github.tony19:logback-android-core:1.1.1-5'
compile 'com.github.tony19:logback-android-classic:1.1.1-5'
}
- 1
- 2
- 3
- 4
- 5
- 6
2:在以下位置創建一個logback.xml文件,默認情況下這個路徑和文件名是固定的
3:配置logback文件
<!--debug屬性用來決定是否打印logback的日誌信息-->
<configuration debug='false'>
<!--聲明一個屬性,用來指定log文件存放的路徑-->
<property name="LOG_DIR" value="/sdcard/rlog"/>
<!--聲明一個時間戳-->
<timestamp datePattern="yyyyMMdd" key="today"/>
<!--用於在控制檯輸出的Appender-->
<appender name="LOGCAT" class="ch.qos.logback.classic.android.LogcatAppender">
<encoder>
<pattern>%-5relative [%thread][%file:%M:%line] - %msg%n</pattern>
</encoder>
</appender>
<!--聲明一個FileAppender-->
<appender name="BASE_FILE" class="ch.qos.logback.core.FileAppender">
<!--初始化的時候不創建文件,在第一次使用的時候創建文件-->
<lazy>true</lazy>
<!--log追加到文件,否則覆蓋文件-->
<append>true</append>
<!--用來保存log的文件全路徑-->
<file>${LOG_DIR}/base.log</file>
<!--輸出log的格式-->
<encoder>
<!--<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} [%file:%line] - %msg%n</pattern>-->
<pattern>%date [%thread] %-5level %logger{36} [%file:%line] - %msg%n</pattern>
</encoder>
</appender>
<!--聲明一個RollingFileAppender-->
<appender name="BASE_ROLL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/base.roll.${today}.log</file>
<append>true</append>
<encoder>
<pattern>%date %-5relative [%thread] %-5level %logger{36} [%file:%M:%line] - %msg%n
</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/base.roll.%d{yyyy-MM-dd}.log</fileNamePattern>
<!--最大保存7天的日誌-->
<maxHistory>7</maxHistory>
</rollingPolicy>
<!--文件大於10mb,切換文件-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
</appender>
<!--指定logtest採用BASE_ROLL_FILE聲明的RollingFileAppender輸出日誌-->
<logger name="logtest">
<appender-ref ref="BASE_ROLL_FILE"/>
</logger>
<!-- Write INFO (and higher-level) messages to the log file -->
<root level="TRACE">
<appender-ref ref="LOGCAT"/>
</root>
<!--支持的level-->
<!--TRACE-->
<!--DEBUG-->
<!--INFO-->
<!--WARN-->
<!--ERROR-->
<!--<pattern>
%d{yyyy-MM-dd HH:mm:ss} [%level] - %msg%n
Logger: %logger
Class: %class
File: %file
Caller: %caller
Line: %line
Message: %m
Method: %M
Relative: %relative
Thread: %thread
Exception: %ex
xException: %xEx
nopException: %nopex
rException: %rEx
Marker: %marker
%n
</pattern>-->
<!--引用其他位置的配置信息-->
<!--<includes>-->
<!--<include file="/sdcard/foo.xml"/>-->
<!--<include resource="assets/config/test.xml"/>-->
<!--<include resource="AndroidManifest.xml"/>-->
<!--<include file="/sdcard/logback/logback-test.xml"/>-->
<!--<include file="/sdcard/logback/logback.xml"/>-->
<!--<include resource="AndroidManifest.xml"/>-->
<!--<include resource="assets/logback-test.xml"/>-->
<!--<include resource="assets/logback.xml"/>-->
<!--</includes>-->
</configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
還有其他的appender提供,詳細說明移步:
http://logback.qos.ch/manual/appenders.html
4:代碼測試
保存在文件中的Log信息:
彩蛋:控制檯的顏色設置
友情提示,你可能需要添加以下權限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- 1
- 2
項目地址: https://github.com/angcyo/LogbackDemo