log4j日志格式加入自定義字段信息方式

log4j日志格式加入自定義字段信息

在使用log4j日志的時候,有時需要在日志中加入自定義字段信息,例如在日志中加入登錄用戶的信息等,這時就可以使用org.apache.log4j.MDC來實現該功能:

1、在Action的方法中,直接使用

MDC.put("username",getUserInfo().getName());  //getUserInfo()獲取登錄用戶信息

2、在log4j的配置文件中

%d{yyyy/MM/dd HH:mm:ss.sss}     [%X{username}]      [%-5p]     %c  -  %m%n

日志文件結果:

2013/11/29 18:00:25.025 [test] [ERROR] com.test.TestAction //紅色test即為加入的用戶信息

註意:紅色部分必須保持一致

log4j2入庫自定義字段類型

項目中數據庫日志表含有number類型的字段,發現按照默認的方式隻能存入字符串類型。網上也找不到相關的幫助信息。

官方API文檔中隻提供瞭幾個屬性

在這裡插入圖片描述

設置isNumber=“true”

嘗試設置瞭屬性 isNumber=”true”竟然成功瞭,代碼如下:

<!--寫入數據庫配置,在Logger中設置日志級別為error-->        
          <JDBC name="databaseAppender" tableName="T_L_LOGINFO">            
          <ConnectionFactory class="com.qxgc.utils.PoolManager" method="getConnection" />  
          <Column name="ID" literal="SEQ_LOGINFO.NEXTVAL"/>
          <Column name="SERVICETYPEID" pattern="%X{sid}" isNumber="true"/>    
          <Column name="RECTIME" isEventTimestamp="true"/>  
          <Column name="USERID" pattern="%X{userid}" />             
          <Column name="ACCESSIP" pattern="%X{ip}" />                
          <Column name="CONTENT" pattern="%m"/>            
          </JDBC>  

測試登錄接口後,看瞭下數據庫,number類型的字段存進去瞭

在這裡插入圖片描述

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: