閱讀273 返回首頁    go 財經資訊


log4j日誌__常見日誌格式_用戶指南_日誌服務-阿裏雲

log4j有兩種接入日誌服務的方式:

  1. 使用loghub log4j appender
  2. 使用logtail收集log4j日誌文件

下麵將分別介紹兩種接入方式。

loghub log4j appender

Log4j由三個重要的組件構成:日誌信息的優先級,日誌信息的輸出目的地,日誌信息的輸出格式。日誌信息的優先級從高到低有ERROR、WARN、INFO、DEBUG,分別用來指定這條日誌信息的重要程度;日誌信息的輸出目的地指定了日誌將打印到控製台還是文件中;而輸出格式則控製了日誌信息的顯示內容。

使用Loghub Log4j Appender,您可以控製日誌的輸出目的地為阿裏雲日誌服務,有一點需要特別注意,Loghub Log4j Appender不支持設置日誌的輸出格式,寫到日誌服務中的日誌的樣式如下:

  1. level:ERROR
  2. location:test.TestLog4jAppender.main(TestLog4jAppender.java:18)
  3. message:test log4j appender
  4. thread:main
  5. time:2016-05-27T03:15+0000

level是日誌級別,location是日誌打印語句的代碼位置,message是日誌內容,thread是線程名稱,time是日誌打印時間。

使用Loghub Log4j Appender的好處

  1. 客戶端日誌不落盤:既數據生產後直接通過網絡發往服務端。
  2. 對於已經使用log4j記錄日誌的應用,隻需要簡單修改配置文件就可以將日誌傳輸到日誌服務。
  3. 異步高吞吐,Loghub Log4j Appender會將用戶的日誌merge之後異步發送,提高網絡IO效率。

使用方法

Step 1: maven工程中引入依賴。

  1. <dependency>
  2. <groupId>com.aliyun.openservices</groupId>
  3. <artifactId>log-loghub-log4j-appender</artifactId>
  4. <version>0.1.1</version>
  5. </dependency>

Step 2: 修改log4j.properties文件(不存在則在項目根目錄創建),配置根Logger,其語法為:

  1. log4j.rootLogger = [level] , appenderName1, appenderName2, …

其中,level 是日誌記錄的優先級,優先級從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這裏定義的級別,您可以控製到應用程序中相應級別的日誌信息的開關。比如在這裏定義了INFO級別,則應用程序中所有DEBUG級別的日誌信息將不被打印出來。appenderName就是指定日誌信息輸出到哪個地方。您可以同時指定多個輸出目的地,這裏的每個appender會對應到具體某一種appender類型,每種appender都會提供一些配置參數。

使用loghub appender的配置如下:

  1. log4j.rootLogger=WARN,loghub
  2. log4j.appender.loghub = com.aliyun.openservices.log.log4j.LoghubAppender
  3. log4j.appender.loghub.projectName = [you project]
  4. log4j.appender.loghub.logstore = [you logstore]
  5. log4j.appender.loghub.endpoint = [your project endpoint]
  6. log4j.appender.loghub.accessKeyId = [your accesskey id]
  7. log4j.appender.loghub.accessKey = [your accesskey]

配置中中括號內的部分是需要填寫的,具體含義見下麵的說明。

loghub appender配置參數

Loghub Log4j Appender可供配置的參數如下,其中注釋為必選參數的是必須填寫的,可選參數在不填寫的情況下,使用默認值。

  1. #日誌服務的project名,必選參數
  2. log4j.appender.loghub.projectName = [you project]
  3. #日誌服務的logstore名,必選參數
  4. log4j.appender.loghub.logstore = [you logstore]
  5. #日誌服務的http地址,必選參數
  6. log4j.appender.loghub.endpoint = [your project endpoint]
  7. #用戶身份標識,必選參數
  8. log4j.appender.loghub.accessKeyId = [your accesskey id]
  9. log4j.appender.loghub.accessKey = [your accesskey]
  10. #當使用臨時身份時必須填寫,非臨時身份則不需要填寫
  11. log4j.appender.loghub.stsToken=[your ststoken]
  12. #被緩存起來的日誌的發送超時時間,如果緩存超時,則會被立即發送,單位是毫秒,可選參數
  13. log4j.appender.loghub.packageTimeoutInMS=3000
  14. #每個緩存的日誌包中包含日誌數量的最大值,不能超過4096,可選參數
  15. log4j.appender.loghub.logsCountPerPackage=4096
  16. #每個緩存的日誌包的大小的上限,不能超過5MB,單位是字節,可選參數
  17. log4j.appender.loghub.logsBytesPerPackage = 5242880
  18. #Appender實例可以使用的內存的上限,單位是字節,默認是100MB,可選參數
  19. log4j.appender.loghub.memPoolSizeInByte=1048576000
  20. #後台用於發送日誌包的IO線程的數量,默認值是1,可選參數
  21. log4j.appender.loghub.ioThreadsCount=1
  22. # 輸出到日誌服務的時間格式,使用java中SimpleDateFormat格式化時間,默認是ISO8601,可選參數
  23. log4j.appender.loghub.timeFormat=yyyy-MM-dd'T'HH:mmZ
  24. log4j.appender.loghub.timeZone=UTC

使用logtail收集

LOG4J 默認日誌格式打到文件中的日誌樣例如下:

  1. 2013-12-25 19:57:06,954 [10.207.37.161] WARN impl.PermanentTairDaoImpl - Fail to Read Permanent Tair,key:e:470217319319741_1,result:com.example.tair.Result@172e3ebc[rc=code=-1, msg=connection error or timeout,value=,flag=0]
  • 多行日誌起始匹配(使用ip信息表示一行開頭):
    1. d+-d+-d+s.*
  • 提取日誌信息的正則表達式:
    1. (d+-d+-d+sd+:d+:d+,d+)s[([^]]*)]s(S+)s+(S+)s-s(.*)
  • 時間轉換格式:
    1. %Y-%m-%d %H:%M:%S
  • 樣例日誌提取結果:
Key Value
time 2013-12-25 19:57:06,954
ip 10.207.37.161
level WARN
class impl.PermanentTairDaoImpl
message Fail to Read Permanent Tair,key:e:470217319319741_1,result:com.example.tair.Result@172e3ebc[rc=code=-1, msg=connection error or timeout,value=,flag=0]

最後更新:2016-11-23 17:16:06

  上一篇:go python日誌__常見日誌格式_用戶指南_日誌服務-阿裏雲
  下一篇:go nodejs日誌__常見日誌格式_用戶指南_日誌服務-阿裏雲