1. 程式人生 > >SpringBoot系列之切換log4j日誌框架

SpringBoot系列之切換log4j日誌框架

SpringBoot系列之使用切換log4j日誌框架

ok,在pom檔案右鍵->Diagrams->show Dependencies....,如圖,找到spring-boot-starter-logging,可以看到SpringBoot的日誌實現預設依賴與logback,ok,如果你對這些知識不是很理解的,建議先看我Springboot專欄的日誌系列部落格:https://smilenicky.blog.csdn.net/category_9195353.html

本部落格要實現的是切換預設日誌框架為log4j,當然是不建議這樣做的,因為log4j有效能問題,所以其作者才開發了logback,不過作為學習的話,還是可以學一下怎麼切換Springboot預設的日誌框架

先去slf4j官網拿一張圖:圖示,切換日誌框架,為了避免衝突,一般都是先排除日誌框架的實現jar,然後再將之前部落格提到的偷樑換柱jar,比如log4j-to-slf4j.jar等等先排除,然後再引入對應的日誌實現jar,如圖所示的slf4j-log4j12.jar,因為本部落格並非入門教程,所以學習之前請先參考我之前Springboot日誌方面的部落格,再來學習

ok,基於slf4j官方提供的知識,我們就可以實踐了,首先選中logback-classic.jar(logback實現jar)、log4j-to-slf4j.jar(將log4j API強制切換回slf4j的偷樑換柱jar),然後右鍵,選擇exclusion

ok,再次開啟pom檔案,可以看到idea自動幫我們exclusion一些jar了

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
                <exclusion>
                        <artifactId>log4j-to-slf4j</artifactId>
                    <groupId>org.apache.logging.log4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

ok,避免日誌衝突,exclusion了logback的實現jar和偷樑換柱的log4j-to-slf4j之後,我們還需要引入log4j的實現jar

<dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>

ok,這是slf4j官網的說法,但是我發現在一些舊的版本SpringBoot是有提供spring-boot-starter-log4j這個場景啟動器的,所以我們可以更簡便的做log4j引入

直接exclusion spring-boot-starter-logging:

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

然後直接引入log4j的場景啟動器,建議加上版本,因為有些版本並沒有提供log4j配置,本部落格是換回1.5.7才支援的,2.2.1的版本仲裁都沒提供對應版本的

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
            <version>1.3.8.RELEASE</version>
        </dependency>

ok,然後在resources直接丟log4j.properties

# LOG4J rootCategory config
log4j.rootCategory=INFO, stdout, file
# LOG4J console config
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n

# root日誌輸出
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=logs/springboot.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n

啟動SpringBoot日誌:

相關推薦

SpringBoot系列切換log4j日誌框架

SpringBoot系列之使用切換log4j日誌框架 ok,在pom檔案右鍵->Diagrams->show Dependencies....,如圖,找到spring-boot-starter-logging,可以看到SpringBoot的日誌實現預設依賴與logback,ok,如果你對這些知識不

Log4j日誌框架

指定格式 orf 換行 you fatal package [] 優先級 pac 引入依賴   在maven遠程倉庫引入依賴    <dependencies> <dependency> <groupId&

Web API系列二WebApi基礎框架搭建

相關 框架搭建 導入 沒有 pos 創建 div 程序 傻瓜式 本文主要介紹如何搭建一個WebApi的項目.關於如何搭建WebApi的方式一共有兩種: 一、通過vs直接新建一個WebApi的項目,步驟如下: 第一步: 新建一個空的Web應用程序,可以理解為作為WebApi的

SpringBoot實戰 接口日誌

empty 工具 argument contains art utm ioe strong exception 在本篇文章中不會詳細介紹日誌如何配置、如果切換另外一種日誌工具之類的內容,只用於記錄作者本人在工作過程中對日誌的幾種處理方式。 1. Debug 日誌管理 在開發

【SSH框架系列 Spring 整合 Hibernate 框架

操作 enter pda 就是 負責 spring配置 1.0 port -s 1、SSH 三大框架整合原理 Spring 與 Struts2 的整合就是將 Action 對象交給 Spring 容器來負責創建。 Spring 與 Hibernate 的整合就是將

SpringBoot系列—瘦身部署

images 提高 sha 內網 -o 方法 out layout 項目部署 一、前言SpringBoot部署起來雖然簡單,如果服務器部署在公司內網,速度還行,但是如果部署在公網(阿裏雲等雲服務器上),部署起來實在頭疼: 編譯出來的 Jar 包很大,如果工程引入了許多開源組

軍閥混戰java常用日誌框架

java常用日誌框架類別介紹 Log4j Apache Log4j是一個基於Java的日誌記錄工具。它是由Ceki Gülcü首創的,現在則是Apache軟體基金會的一個專案。 Log4j是幾種Java日誌框架之一。 Log4j 2 Apache Log4j 2是apache開

Spring 中整合log4j日誌框架

構建專案,加入log4j日誌框架 在pom.xml加入以下依賴: <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId>

SpringBoot系列使用自定義註解校驗使用者是否登入

記得今年年初剛開始面試的時候,被問的最多的就是你知道Spring的兩大核心嘛?那你說說什麼是AOP,什麼是IOC?我相信你可能也被問了很多次了。 1、到底是什麼是AOP? 所謂AOP也就是面向切面程式設計,能夠讓我們在不影響原有業務功能的前提下,橫切擴充套件新的功能。這裡面有一個比較顯眼的詞

Springboot系列介紹

前言 什麼是Springboot  簡單得說Springboot整合大多數第三方框架,以介入Springboot系列直接全方位整合 Springboot是微服務框架(Springcloud)的

SpringBoot系列JPA的使用

JPA的簡單定義 對於我這樣初次接觸的人來說,jpa就是一種連線資料的api,由於JpaRepository介面提供了很多強大的方法,能很方便的拼接,從而能讓我們對資料庫的操作較為方便的進行操作。 JpaRepository通過各種介面的繼承,從而有了各種CR

Java併發程式設計系列十五 Executor框架

                     Java使用執行緒完成非同步任務是很普遍的事,而執行緒的建立與銷燬需要一定的開銷,如果每個任務都需要建立一個執行緒將會消耗大量的計算資源,JDK 5之後把工作單元和執行機制區分開了,工作單元包括Runnable和Callable,而執行機制則由Executor框架提供

Springboot系列Springboot與Mybatis整合

前言 技術部落格那麼多,為什麼自己整理呢?太過零散的知識點不易記憶,且查詢的時候也不是太方便,眼過千遍不如手過一遍的操作一遍,即使Springboot已經很好的整合了各項的技術框架,但實際操作的時候也會發現一些問題。我會將可能出現的問題記錄一下,博文時刻更新。 預備知識: Springboot 2.0.6

Springboot系列Springboot的郵件服務

前言 Springboot集常用的功能於一體,當然郵件功能作為最常見的功能,自然不能缺席Springboot的大家庭,spring-boot-starter-mail這個jar裡面封裝了SpringBoot的郵件功能。下面來看一下常見的郵件用途 預備知識: Springboot 2.1.1 Maven 3

SpringBoot系列外部Servlet容器啟動原理

外部Servlet容器啟動springboot應用原理 瞭解外部Servlet容器啟動springboot的原理,需要先了解一個規則,這個規則可以參考servlet3.0規範的8.2.4章 Shared libraries / runtimes pluggability:

springboot系列-logging

原文地址:http://www.cnblogs.com/nuccch/p/6221255.html 配置檔案以application.yml為例說明: Spring Boot預設的日誌元件為Logback。 一. 日誌配置引數: logging: file:

SpringBoot系列嵌入式servlet容器自動配置原理

嵌入式servlet容器自動配置原理 springboot中存在大量的自動配置類,瞭解它的工作原理有助於加深對程式碼的理解,實現自定義配置的修改,同時也方便以後借鑑其設計模式;本文通過研究EmbeddedServletContainerAutoConfiguration:嵌

SpringBoot系列嵌入式servlet容器啟動原理

嵌入式servlet容器啟動原理 本文將探討以下問題: 什麼時候建立嵌入式的Servlet容器工廠?什麼時候獲取嵌入式的Servlet容器並啟動Tomcat; 1)、SpringBoot應用啟動執行run方法 2)、refreshContext(context);S

Netty系列Netty編解碼框架分析

1. 背景 1.1. 編解碼技術 通常我們也習慣將編碼(Encode)稱為序列化(serialization),它將物件序列化為位元組陣列,用於網路傳輸、資料持久化或者其它用途。 反之,解碼(Decode)/反序列化(deserialization)把從網路、磁碟等

SpringBoot系列——整合JPA、mysql

們的 什麽 自增 先生 host tput 高級特性 scope zone 一、JPA 1. 概念:JPA顧名思義就是Java Persistence API的意思,是JDK 5.0註解或XML描述對象-關系表的映射關系,並將運行期的實體對象持久化到數據庫中。