springboot結合日誌門面SLF4j和日誌實現Logback的使用

来源:https://www.cnblogs.com/yemengshen/archive/2019/09/06/11478293.html
-Advertisement-
Play Games

一、此處主要介紹在springboot工程下如何使用 logback + slf4j 進行日誌記錄。 logback主要包含三個組成部分:Loggers(日誌記錄器)、Appenders(輸出目的在)、Layouts(日誌輸出格式) slf4j :如jdbc一樣,定義了一套介面,是一個日誌門面,可實 ...


一、此處主要介紹在springboot工程下如何使用 logback + slf4j  進行日誌記錄。

logback主要包含三個組成部分:Loggers(日誌記錄器)、Appenders(輸出目的在)、Layouts(日誌輸出格式) 

slf4j :如jdbc一樣,定義了一套介面,是一個日誌門面,可實現多個日誌系統間快速切換(通過修改配置文件)

logback : 和log4j是同一作者,是log4j的升級版,效果可想而知.

logback 主要分為三個模塊,分別是:

  logback-core:提供基礎功能,是其他兩個模塊的基礎
  logback-classic : log4j的升級,實現了self4j api
  logback-access:用於與sevlet容器進行集成、提供網路訪問日誌的功能

二、初級日誌門面SLF4j和日誌實現Logback的使用

第一步使用springboot框架建立maven工程:

 

 

 

 

 

 

第二步在springboot框架的Maven工程中導入依賴:

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

 

 

第三步在test/java/com/imooc/新建LoggerTest.java

第一種使用:

private final Logger logger= LoggerFactory.getLogger(LoggerTest.class);
@RunWith(SpringRunner.class)
@SpringBootTest
public class LoggerTest {
    private final Logger logger= LoggerFactory.getLogger(LoggerTest.class);
    @Test
    public void test1(){
        logger.error("error...");
        logger.info("info...");
        logger.debug("debug...");
    }
}

日誌輸出級別:數字越大,級別越高,優先輸出

 

 第二種使用:

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LoggerTest {
    @Test
    public void test1(){
        String name="yemeng";
        String password="123";
        log.info("name:{}, password:{}",name,password);
        log.error("error");
    }
}

 

 三、使用配置文件

1.application.yml

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://192.168.1.110/sell?characterEncoding=utf-8&useSSL=false
  jpa:
    show-sql: true
#項目路徑
server:
  context-path: /sell
##日誌
logging:
  #格式
  pattern:
    #日期+信息+換行
    console: "%d -%msg%n"
  #path: /var/log/tomcat/sell.log
  #日誌存儲路徑
  file: /var/log/tomcat/sell.log
  #等級
  level: #debug
    com.imooc.LoggerTest:debug

2.logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %msg%n
            </pattern>
        </layout>
    </appender>

<!-- 輸出info日誌文件-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--過濾策略-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--丟棄匹配的日誌等級-->
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
    <!-- 滾動的策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!--  路徑-->
            <fileNamePattern>var/log/tomcat/info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <!-- 輸出error日誌文件-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--過濾策略-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滾動的策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路徑-->
            <fileNamePattern>var/log/tomcat/error.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <root level="info">
        <appender-ref ref="consoleLog"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
    </root>
</configuration>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 談談 Callable 任務是怎麼運行的?它的執行結果又是怎麼獲取的? 向線程池提交Callable任務,會創建一個新線程(執行任務的線程)去執行這個Callable任務,但是通過Future get獲取任務的執行結果是在提交任務的調用者線程中,那問題一:調用者線程如何獲取執行任務的線程的結果? 在 ...
  • PHP數組: 創建定義數組: 數值數組: array():定義數組 如上array()函數定義的內容會以數組的形式傳給變數Array 自動分配ID鍵: 手工分配ID鍵: count():獲取數組長度 count()函數返回數組的長度 關聯數組:帶有指定鍵的數組,每個鍵關聯一個值(類似鍵值對) 多維數 ...
  • 閱讀本文大概需要 4 分鐘。 作者:黃小斜 不知道大家知不知道彈性工作制這種說法。 這個說法據說最早也是出現在互聯網公司里的,所謂的彈性工作制是什麼意思呢?簡單來說,就是指,員工的工作時間可以隨著工作的情況來進行適當的調整。 工作輕鬆的時候,每天工作時間縮短幾小時,工作比較忙的時候,工作時間就延長幾 ...
  • 02-jQuery的選擇器 我們以前在CSS中學習的選擇器有: 今天來學習一下jQuery 選擇器。 jQuery選擇器是jQuery強大的體現,它提供了一組方法,讓我們更加方便的獲取到頁面中的元素。 1、jQuery 的基本選擇器 代碼如下: <!DOCTYPE html> <html lang= ...
  • 今日所學: /* 2019.08.19開始學習,此為補檔。 */ JDK 1.6:byte , int , short , char , enum JDK 1.7:byte , int , short , char , enum , String 數組:相同類型的容器。其 a.大小固定 b.記憶體連續 ...
  • 上面的結果返回為null getResource方法要註意類路徑 測試後發現方法參數為 ,返回的url是類路徑的。 maven工程編譯後的class文件目錄結構的類路徑,不需要以 開頭。 就正常了 ``` ...
  • java模擬多ip請求 package url_demo; import java.util.Random; public class DemoUtl { public static int index = 0; public static void main(String[] args) thro ...
  • 場景 CSDN: https://blog.csdn.net/badao_liumang_qizhi 博客園: https://www.cnblogs.com/badaoliumangqizhi/ 嗶哩嗶哩視頻教程: https://space.bilibili.com/164396311 實現 關 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...