1. 程式人生 > >java日誌管理

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