日誌配置

韓師學子--胖佳發表於2019-03-01

                                     日誌配置

介紹了日誌中log4j的組成和使用,以及在伺服器日誌中使用MDC來進行使用者跟蹤,客戶端的日誌輸出

 

一. log4j的組成與使用

logger

  • 使用:loggerFactory.getlogger

例如:
 

public static final Logger LOGGER = LoggerFactory.getLogger("receiveChargeResultLogger");
 
private static final Logger mainLogger = LoggerFactory.getLogger(MibiServiceImpl.class);
  • 定義:
<logger name="com.xiaomi" additivity="true">

<level value="info" />

<appender-ref ref="file" />

</logger>

appender

指定日誌資訊的輸出裝置,比如控制檯,檔案,常用的有以下幾個:

org.apache.log4j.ConsoleAppender( 控制檯 )

org.apache.log4j.FileAppender(檔案)

org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌檔案)

org.apache.log4j.RollingFileAppender(檔案大小到達指定尺寸的時候產生一個新的檔案)

org.apache.log4j.WriterAppender(將日誌資訊以流格式傳送到任意指定的地方)

 

一個示例:

<appender name="file" class="org.apache.log4j.DailyRollingFileAppender">

<param name="File" value="/home/work/log/${nationalLocal}/${server_name}/main.log" />

<param name="DatePattern" value=".yyyyMMdd" />

<layout class="org.apache.log4j.PatternLayout">

<param name="ConversionPattern" value="[%-5p %d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] [%X{SessionId}] %l [%m]%n" />

</layout>

</appender>

-rw-r--r-- 1 work work 516M Nov 20 23:59 my-api.log.20161120.gz
-rw-r--r-- 1 work work 361M Nov 21 23:59 my-api.log.20161121.gz
-rw-r--r-- 1 work work 368M Nov 22 23:59 my-api.log.20161122.gz
-rw-r--r-- 1 work work 492M Nov 23 23:59 my-api.log.20161123.gz
-rw-r--r-- 1 work work 656M Nov 24 23:59 my-api.log.20161124.gz

 

將日誌打到統一的日誌伺服器:scripeAppender

layout

日誌的佈局
[INFO  2016-11-25 00:00:02.155] [resin-port-8088-16] [aaaHMSAHtMtXl6elKQqIv_1915423058] com.my.controllers.Controller.myImpl(Controller.java:183) [login score from auth token is [5], userId [832960495]]

 

root logger

所有logger的parent,子logger通過配置引數additivity為true來繼承root logger的特徵

二. 日誌中的使用者跟蹤

使用MDC(Mapped Diagnostic Context)儲存上下文資訊(SessionId)。

三. 客戶端使用logcat來輸出

import android.util.Log;

private static final String TAG = "RepayAlarmService";

Log.e(TAG, "add local repay alarm info failed operation application exception", e);

 

相關文章