1. 程式人生 > >SpringBoot應用與原理之整合Log4j2

SpringBoot應用與原理之整合Log4j2

一 本章概述

SpringBoot應用替換預設的Logback日之框架,採用Log4j2實現

二 SpringBoot應用整合Log4j2

1 替換預設的logback

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion
>
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency>

2 加入基於SpringBoot的Log4j2 Starter

<dependency
>
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>

3 配置log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--設定log4j2的自身log級別為warn -->
<configuration status="warn"
>
<properties> <Property name="app_name">springboot-web</Property> <Property name="log_path">logs/${app_name}</Property> </properties> <appenders> <console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="[%d][%t][%p][%l] %m%n" /> </console> <RollingFile name="RollingFileInfo" fileName="${log_path}/info.log" filePattern="${log_path}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz"> <Filters> <ThresholdFilter level="INFO" /> <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL" /> </Filters> <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /> <Policies> <!-- 歸檔每天的檔案 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 限制單個檔案大小 --> <SizeBasedTriggeringPolicy size="2 MB" /> </Policies> <!-- 限制每天檔案個數 --> <DefaultRolloverStrategy compressionLevel="0" max="10"/> </RollingFile> <RollingFile name="RollingFileWarn" fileName="${log_path}/warn.log" filePattern="${log_path}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz"> <Filters> <ThresholdFilter level="WARN" /> <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL" /> </Filters> <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /> <Policies> <!-- 歸檔每天的檔案 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 限制單個檔案大小 --> <SizeBasedTriggeringPolicy size="2 MB" /> </Policies> <!-- 限制每天檔案個數 --> <DefaultRolloverStrategy compressionLevel="0" max="10"/> </RollingFile> <RollingFile name="RollingFileError" fileName="${log_path}/error.log" filePattern="${log_path}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz"> <ThresholdFilter level="ERROR" /> <PatternLayout pattern="[%d][%t][%p][%c:%L] %m%n" /> <Policies> <!-- 歸檔每天的檔案 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 限制單個檔案大小 --> <SizeBasedTriggeringPolicy size="2 MB" /> </Policies> <!-- 限制每天檔案個數 --> <DefaultRolloverStrategy compressionLevel="0" max="10"/> </RollingFile> <!-- 配置mongdb appender --> </appenders> <loggers> <!--過濾掉spring和hibernate的一些無用的debug資訊 --> <root level="info"> <appender-ref ref="Console" /> <appender-ref ref="RollingFileInfo" /> <appender-ref ref="RollingFileWarn" /> <appender-ref ref="RollingFileError" /> <!-- 輸出日誌到mongodb --> </root> </loggers> </configuration>

4 配置appliaction.properties

logging.config=classpath:log4j2.xml

三 Log4j2的應用

package com.ekeyfund.framework.springboot.web.controller;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * IndexController
 *
 * @author tony [email protected]
 * @create 2017-09-14-下午4:51
 * @see
 * @since JDK1.8u141
 */
@RestController
public class IndexController {


    private static final Logger logger = LogManager.getLogger(IndexController.class);

    @GetMapping("/index")
    public String index(){

        for(int i=0;i<10_0000;i++){
            logger.info("info execute index method");
            logger.warn("warn execute index method");
            logger.error("error execute index method");

        }


        return "My First SpringBoot Application";
    }
}

啟動應用會發現日誌會根據不同的級別儲存在不同的檔案,當日志文件大小超過2M以後會分多個檔案壓縮儲存,生產環境的日誌檔案大小建議調整為20-50MB。

重要說明:
移動終端更好的閱讀方案,關注個人微信公眾號: ittimeline,CSDN文章內容會實時同步到該公眾號中。

相關推薦

SpringBoot應用原理整合Log4j2

一 本章概述 SpringBoot應用替換預設的Logback日之框架,採用Log4j2實現 二 SpringBoot應用整合Log4j2 1 替換預設的logback <dependency> <gro

Springboot專案vue專案整合打包

我的環境 * JDK 1.8 * maven 3.6.0 * node環境 1.為什麼需要前後端專案開發時分離,部署時合併? 在一些公司,部署實施人員的技術無法和網際網路公司的運維團隊相比,由於各種不定的環境也無法做到自動構建,容器化部署等。因此在這種情況下儘量減少部署時的服務軟體需求,打出的包數量也儘量

Springboot 應用工作原理簡述

同傳統的Spring開發模式相比,開發Springboot應用時,我們只需要引入相關的starter jar包就能構造一個可以執行起來的應用,這樣就可以把主要的精力用於核心業務功能的開發,非常方便和高效。 那麼,在這種方便和高效背後,Springboot是怎麼工作的?這裡對其工作原理

SpringBoot 2.1.1.RELEASE 整合log4j2

http://www.qchcloud.cn/system/article/show/66步驟1: 新增依賴: org.springframework.boot spring-boot-starter-log4j2 過濾: org.springframework.boot spring-boot-star

Springboot應用快取實踐:Ehcache加持

本文共 851字,閱讀大約需要 3分鐘 ! 本文內容腦圖如下: 概述 在如今高併發的網際網路應用中,快取的地位舉足輕重,對提升程式效能幫助不小。而3.x開始的 Spring也引入了對 Cache的支援,那對於如今發展得如火如荼的 Spring Boo

Tomcat 的簡單應用 & eclipse的整合

Tomcat的簡單安裝 & 與Eclipse的整合 一、java web伺服器之Tomcat (一)、幾種常見的文字伺服器 Tomcat: 由Apache組織提供的一種Web伺服器 提供對jsp和Servlet的支援。它是一種輕量級的j

Android原始應用web app整合:內嵌jquery mobile為html5框架

前言:    很長時間一直思考什麼時候需要原生應用於html5開發的web app結合去開發一個App;終於做了一個《立波育兒百科》的應用,才嘗試了這種方式做一個App; 本文作者:心有靈犀鬼才心,blog地址:http://blog.csdn.net/c

Qt核心機制原理訊號

訊號與槽 訊號和槽機制是Qt的核心機制之一,要掌握Qt程式設計就需要對訊號和槽有所瞭解。訊號和槽是一種高階介面,它們被應用於物件之間的通訊,它們是Qt的核心特性,也是Qt不同於其它同類工具包的重要地方之一。 在我們所瞭解的其它GUI工具包中,視窗小部件

springboot快取—使用、原理整合redis

      Java快取介面標準JSR-107:Java Caching定義了5個核心介面,分別是CachingProvider(快取提供者), CacheManager(快取管理器), Cache(快取元件), Entry (key-value對)和Expiry(條目有效期

二十五、併發程式設計join應用實現原理剖析

1、join有什麼用呢? 當一個執行緒正在進行中的時候,如果我們想呼叫另外一個執行緒的話,這時我們可以使用join。 2、join方法的底層原理,簡單來說就是,join方法能把所呼叫join方法的執行緒進入休眠狀態(wait()),等執行完joinThread執行緒之後,會自動

Uni-app實戰專案整合SpringBoot前後端分離開發Android、iOS、小程式應用

歡迎加入課程群:571278542 課程大綱[會有細微差異,最終以錄製課程為準]: 1、成果演示 2、開發技術和工具介紹 3、建立資料庫(後臺開發3-7節) 4、環境搭建 5、欄目管理(七牛雲管理附件)

SpringBoot學習筆記一【Idea下建立springboot示例、啟動原理分析兩種部署啟動方式】

1、使用背景 首先說下我們為什麼使用springboot,原因有以下幾點 1、快速建立獨立執行的spring專案以及與主流框架繼承 2、使用嵌入式的Servlet容器,無需打成war包 3、starters自動依賴於版本控制 4、大量的自動配置,簡化開發,也可修改預設值 5、

《Visual C++異常處理機制原理應用(二)—— C/C++結構化異常處理try-finally終止處理的使用原理(下)》

在上一篇文章中,我們其實只分析了終止型異常處理程式中正常的執行流程,這種情況的出現其實需要作如下假設: __try塊中的程式碼執行過程中不會引發異常 這部分程式碼不會試圖提前離開__try塊的作用範圍(如包含goto、break、continue、retur

springboot 檢索—使用、原理整合ElasticSearch

        ElasticSearch--全文搜尋引擎的首選:面向文件,它儲存整個物件或文件。使用json作為文件的序列化格式(一個json文件就代表一個物件)。         springboot(版本:2.0.2.RELEASE)整合elasticsearch:

Unity/C#基礎複習(5) 淺析觀察者、中介者模式在遊戲中的應用delegate原理

參考資料 【1】 《Unity 3D指令碼程式設計 使用C#語言開發跨平臺遊戲》陳嘉棟著 【2】 @張子陽【C#中的委託和事件 - Part.1】 http://www.tracefact.net/tech/009.html 【3】 @張子陽【C#中的委託和事件 - Part.2】 http://www.t

SpringBoot學習整合Druid的簡單應用

# 一、Druid介紹 ## Druid簡介 Druid是目前Java語言中最好的資料庫連線池之一。結合了 C3P0、DBCP 等 DB 池的優點,同時加入了日誌監控。Druid 是一個分散式的、支援實時多維 OLAP 分析的資料處理系統。它既支援高速的資料實時攝入處理,也支援實時且靈活的多維資料分析查詢。

SpringBoot魔法堂:應用熱部署實踐原理淺析

# 前言 後端開發的同學想必每天都在重複經歷著修改程式碼、執行程式碼編譯,等待……重啟Tomcat服務,等待……最後測試發現還是有bug,然後上述流程再來一遍(我聽不見):( 能不能像前端開發的同學那樣,修改程式碼儲存檔案後自動編譯、重新載入應用呢?Spring Boot給了我們一個大大的Yes! 本文

python子進程模塊subprocess詳解應用實例

app 命令執行 windows rom not tput 一個 網絡 shell命令 二、應用實例解析 2.1 subprocess模塊的使用 1. subprocess.call >>> subprocess.call(["ls", "-l"]) 0

持續集成②:整合jenkins代碼質量管理平臺Sonar並實現構建失敗郵件通知

代碼分析 運行 war plugins lin color nic oca boa 持續集成之②:整合jenkins與代碼質量管理平臺Sonar並實現構建失敗郵件通知 一:Sonar是什麽?Sonar 是一個用於代碼質量管理的開放平臺,通過插件機制,Sonar 可以集成不同

[Java]Servlet工作原理二:SessionCookie

工作 一段時間 .cn cookie font ava logs mage ont (未完待續) 一、Cookie Cookie 用於記錄用戶在一段時間內的行為,它有兩個版本:Version 0 和 Version 1,分別對應兩種響應頭 Set-Cookie 和 Set-