java日誌管理
java常用日誌框架簡介
log4j和logback都是java專案中經常使用的日誌框架,通常會結合slf4j一起使用。
log4j和logback都是具體的日誌實現框架,slf4j是一個介面層框架,slf4j-log4j,slf4j-logback則是針對log4j和logback的橋接框架。使用slf4j,就可以隨意切換日誌框架,而不用修改程式碼。
高併發系統日誌記錄
多執行緒環境會由於多個執行緒同時會向一個日誌檔案記錄日誌,所以會導致日誌混亂,查詢某個執行緒的日誌變的不方便。比如跟蹤某個訂單號、某個使用者的相關日誌。
我們可以使用slf4j的MDC來解決這個問題。
MDC ( Mapped Diagnostic Contexts ),顧名思義,其目的是為了便於我們診斷線上問題而出現的方法工具類。雖然,Slf4j 是用來適配其他的日誌具體實現包的,但是針對 MDC功能,目前只有logback以及log4j支援。
MDC對外提供的介面:
public class MDC {
//Put a context value as identified by key
//into the current thread's context map.
public static void put(String key, String val);
//Get the context identified by the key parameter.
public static String get(String key);
//Remove the context identified by the key parameter.
public static void remove(String key);
//Clear all entries in the MDC.
public static void clear();
}
介面定義非常簡單,此外,其使用也非常簡單。
一般,我們在程式碼中,只需要將指定的值put到執行緒上下文的Map中,然後,在對應的地方使用 get方法獲取對應的值。此外,對於一些執行緒池使用的應用場景,可能我們在最後使用結束時,需要呼叫clear方法來清洗將要丟棄的資料。
看看一個MDC使用的簡單示例
MDC.put("traceNo","jd.com");
logger.info("method testFindByName in UserServiceTest" );
User user = userService.findByName("test");
logger.info("user:{}",user);
Assert.assertNotNull(user);
MDC.clear();
logback.xml配置:
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!-- 對日誌進行格式化。 -->
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss} %level %logger.%M\(%F:%L\)] [%X{traceNo}] %msg%n
</pattern>
</encoder>
</appender>
如上,在logback.xml中的pattern中我們加入了[%X{traceNo}]
,在MDC中放入traceNo的值,就可以記錄日誌了。
2018-03-03 10:11:27 INFO com.tommy.myapp.dao.UserServiceTest.testFindByName(UserServiceTest.java:52)] [jd.com] user:User{id=1, name='test', birthday=Sat Mar 03 10:11:27 CST 2018}
注意日誌中的[jd.com],這就是我們日誌中加入的自定義的欄位,在Linux系統中,我們可以通過grep traceNo xx.log --color
查詢某個跟蹤號相關的日誌,並高亮顯示。
在WEB系統中,則可以新建一個自定義的請求過濾器,對業務請求進行過濾,在過濾器內處理請求前加入traceNo,請求處理完畢後,從MDC刪除traceNo。
相關推薦
java日誌管理
java常用日誌框架簡介 log4j和logback都是java專案中經常使用的日誌框架,通常會結合slf4j一起使用。 log4j和logback都是具體的日誌實現框架,slf4j是一個介面層框架,slf4j-log4j,slf4j-logback則是針對
Java 日誌管理
Logger.java//Level.java Log級別定義[quote]OFF 一個特殊的級別,它可以關閉日記記錄SEVERE severe級別的的資訊應該描述非常重要的可能阻止程式正常執行的事件,應該清楚的描述給終端使用者或者系統管理員 [si'viə]
java日誌管理(效能日誌,操作日誌,異常日誌)
在寫一個 java日誌管理的時候 遇到很多坑 下面寫一下自己學習的心路歷程 首先參考的這個大佬 操作日誌詳解 猶豫我是用的是springMvc 中間 出現了 一個 springAop無反應問題 又參考了一下這個大佬Spring MVC中AOP無效、不
Java日誌管理最佳實踐
在 IBM Bluemix 雲平臺上開發並部署您的下一個應用。 概述 對於現在的應用程式來說,日誌的重要性是不言而喻的。很難想象沒有任何 日誌記錄功能的應用程式執行在生產環境中。日誌所能提供的功能是多種多樣的, 包括記錄程式執行時產生的錯誤資訊、狀態資訊、除錯資訊和執行時間資訊等。 在生產
Java日誌管理:Logger.getLogger()和LogFactory.getLog()的區別(詳解Log4j)
第一、Logger.getLogger()和LogFactory.getLog()的區別 1.Logger.getLogger()是使用log4j的方式記錄日誌; 2.LogFactory.getLog()則來自apache的common-logging包。 co
java slf4j日誌管理
SLF4J,即簡單日誌門面(Simple Logging Facade for Java),不是具體的日誌解決方案,它只服務於各種各樣的日誌系統。按照官方的說法,SLF4J是一個用於日誌系統的簡單Facade,允許終端使用者在部署其應用時使用其所希望的日誌系統。
java xml格式日誌管理
一.參考1 maven配置: <dependency> <groupId>org.slf4j</groupId> &nb
Spring Boot 整合 log4j 實現日誌管理報錯:java.lang.IllegalArgumentException: LoggerFactory is not a Logback
問題: Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Log
JAVA學習筆記_利用slf4j進行log4j日誌管理
slf4j介紹 slf4j官網:http://www.slf4j.org/ SLF4J,即簡單日誌門面(Simple Logging Facade for Java),不是具體的日誌解決方案,它只服務於各種各樣的日誌系統。SLF4J所提供的核心API是一些
java程式日誌管理
初入軟體開發這一行的人,可能對日誌管理的概念並不是很明確,大概是由於經驗所限,以至於根本還考慮不到這個問題。 而從某種意義上來說,日誌管理實際上也不需要初入這一行的人來管,他們只需要負責實現自己的主要業務邏輯和功能就好了。 我當初剛入行的時候就有很長一段時間
Java使用log4j進行日誌管理
log4j是一個開源的日誌工具包,可以提供很好的日誌支援。可以通過配置檔案,定義日誌輸出的等級,日誌檔案格式,存放位置,儲存策略等。 1.引入log4j包 到官網下載所需要的jar包或者原始
JAVA 開發平臺的技術和框架(五)日誌管理 :common-logging slf4j log4j logBack
common-logging common-logging是apache提供的一個通用的日誌介面。使用者可以自由選擇第三方的日誌元件作為具體實現,像log4j,或者jdk自帶的logging, common-logging會通過動態查詢的機制,在程式執行時自動找出真正使用
NLog日誌管理工具
控制臺應用程序 自動 esp log sdn clas 輸出 ons nbsp 一、通過VS建立一個控制臺應用程序。 二、打開程序包管理器控制臺。具體操作如下:【工具】》【庫程序包管理器】》【程序包管理器控制臺】。 三、在程序包管理器控制臺下輸入命令:Insta
Nginx教程(三) Nginx日誌管理
代理服務器 pla load 配置文件 404頁 base lsp bsp 知識 Nginx教程(三) Nginx日誌管理 1 日誌管理 1.1 Nginx日誌描述 通過訪問日誌,你可以得到用戶地域來源、跳轉來源、使用終端、某個URL訪問量等相關
java版本管理工具
onf alt con 技術 href 環境變量 ini model html maven: 1、下載解壓apache-maven 2、新建環境變量M2_HOME指向maven目錄,並在PATH中加入%M2_HOME%\bin 3、在shell中輸入命令測試ma
Java日誌信息存庫(logback篇)
values deb extends 數據連接 trigger 日誌系統 bst update array 一、Logback簡介 Logback是由log4j創始人設計的又一個開源日誌組件。logback當前分成三個模塊:logback-core,logback- c
Java-事務管理
pri getc 自己 forname rollback ger [] string 將不 1、事務的概念: 事務指邏輯上的一組操作,組成這組操作的各個單元,要麽全部成功,要麽全部不成功。 2、 管理事務: 2.1. 數據庫默認的事務 數據庫默認支持事務的,但
JAVA日誌框架log4j和slf4j
writer class 基本 鏈接 發送 控制 spa com 內容 1 org.apache.log4j.ConsoleAppender(控制臺) 2 org.apache.log4j.FileAppender(文件) 3 org.apache.log4j.Daily
Linux筆記(十四) - 日誌管理
關機 ron pri 內核 有用 規則 rsyslog 所有者 事件 (1)rsyslogd的服務:查看服務是否啟動:ps aux | grep rsyslogd 查看服務是否自啟動:chkconfig --list | grep rsyslog 配置文件 : /etc/r
java 日誌 log4j
span %x figure roo oid fig pac led 下載 1.下載jar:log4j-1.2.15.jar 2.配置文件:log4j.properties # Priorities are: DEBUG, INFO, WARN, ERROR, or FA