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