精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

日志打印的這10個坑,你至少踩過一個...

開發 前端
ConsoleAppender只記錄INFO級別及以上的日志,而FileAppender記錄DEBUG級別但排除INFO級別的日志。這樣可以避免INFO級別的日志被兩個appender同時記錄。

前言

大家好,我是撿田螺的小男孩.

我們日常開發中,經常需要打印日志.但是不當的日志使用可能會導致各種問題。整理了日志打印的10個坑,希望大家都能避坑~~

1.忽視日志級別,反手就是INFO

常見的日志級別有5種,分別是error、warn、info、debug、trace。日常開發中,我們需要選擇恰當的日志級別,不要反手就是打印info哈~

  • ERROR:錯誤日志,指比較嚴重的錯誤,對正常業務有影響,需要運維配置監控的;
  • WARN:警告日志,一般的錯誤,對業務影響不大,但是需要開發關注;
  • INFO:信息日志,記錄排查問題的關鍵信息,如調用時間、出參入參等等;
  • DEBUG:用于開發DEBUG的,關鍵邏輯里面的運行時數據;
  • TRACE:最詳細的信息,一般這些信息只記錄到日志文件中

2.過度日志記錄

  • 問題:記錄了過多的日志信息,導致日志文件過大,難以管理和分析。

比如這個例子(過度記錄DEBUG級別的日志):

// 過度記錄DEBUG級別的日志
public void processData() {
    logger.debug("Entering processData method.");
    // 業務邏輯
    logger.debug("Exiting processData method.");
}

正例應該這樣(僅記錄必要的日志信息)

// 僅在異常和重要步驟中記錄日志
public void processData() {
    try {
        logger.info("Start processing data.");
        // 業務邏輯
        logger.info("Finished processing data.");
    } catch (Exception e) {
        logger.error("Error occurred while processing data: ", e);
    }
}

我們應當根據日志的重要性設置不同的日志級別(如ERROR、WARN、INFO、DEBUG),只記錄必要的日志信息,避免日志打印處理成流水賬.

3.將debug日志直接帶到生產環境

有些伙伴亂用日志級別,甚至將DEBUG級別的日志用于生產環境。

反例(將DEBUG級別的日志直接用于生產環境):

logger.debug("This is a debug message,should not be logged in production");

正例 (debug日志級別,最好判斷一下是否開啟):

if(log.isDebugEnable()){
  logger.debug("This is a debug message,should not be logged in production"); 
}

4.日志缺少上下文信息

大家可以看下這行日志,覺得有啥問題

logger.info("User login request");

很明顯,日志缺少上下文信息,并不方便排查.比如說,你想知道是哪個用戶的登錄請求嘛? 至少把userId 打印出來吧,如下:

logger.info("User login request,userId:{}",userId);

5.同步IO導致性能問題

同步日志記錄會阻塞主線程,影響系統性能。因此使用異步日志框架(比如Log4j 2的異步日志記錄器)來減少對性能的影響。

// 使用Log4j 2的異步日志
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <Async name="AsyncConsole">
            <AppenderRef ref="Console"/>
        </Async>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="AsyncConsole"/>
        </Root>
    </Loggers>
</Configuration>

6.日志配置不合理:

有些日志配置文件復雜,難以維護;配置文件中存在硬編碼路徑。如下:

// log4j.properties 示例
log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/var/log/tianluoboy.log

應當使用靈活的配置

// logback.xml 示例
<configuration>
    <property name="LOG_HOME" value="${LOG_HOME:-/var/log/myapp}"/>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/tianluoboy.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/tianluoboy.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="FILE"/>
    </root>
</configuration>

7.日志內容泄露敏感信息

日志中記錄了用戶的敏感信息(如密碼、信用卡號),存在安全風險。

logger.info("User password: {}", password);

這都把用戶的密碼打印出來了...解決方法就是,不能打印密碼這些關鍵信息,如果是手機號、郵箱等敏感信息,則可以脫敏、或者掩碼處理。

8.日志文件輪轉和歸檔配置不當。

如果日志文件過大時未能及時輪轉,就很坑.

// 簡單的日志配置,沒有輪轉策略
log4j.appender.file.File=tianluoboy.log

日志要配置合理的輪轉和歸檔策略,避免文件過大.

// logback.xml 示例
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>tianluoboy.logg</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>tianluoboy.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="FILE"/>
    </root>
</configuration>

9.日志框架漏洞的問題

有些日志框架,在低版本,可能會存在安全漏洞問題.甚至有些可能會存在漏洞還沒被發現.

我們如何做呢? 如果是低版本存在安全漏洞的日志框架,我們要盡快升級到最新版本.

比如Log4Shell 是Log4j 2.x中一個嚴重的遠程代碼執行(RCE)漏洞。攻擊者可以通過特制的日志消息來觸發JNDI查找請求,從而在受影響的系統上執行任意代碼。

可以升級到Log4j 2.17.0或更高版本,這些版本已經修復了該漏洞。

尚未被發現的漏洞,也可能潛在地影響應用程序的安全性。我們要使用成熟的日志框架,并且要定時更新和維護.

10.錯誤配置LevelFilter造成日志重復記錄

錯誤配置LevelFilter可能導致日志重復記錄的問題.比如你這樣配置:

<Configuration status="WARN">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d [%t] %-5level: %msg%n%throwable"/>
            <Filters>
                <LevelFilter level="INFO" notallow="ACCEPT" notallow="DENY"/>
            </Filters>
        </Console>
        <File name="FileAppender" fileName="app.log">
            <PatternLayout pattern="%d [%t] %-5level: %msg%n%throwable"/>
            <Filters>
                <LevelFilter level="INFO" notallow="ACCEPT" notallow="DENY"/>
            </Filters>
        </File>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="ConsoleAppender"/>
            <AppenderRef ref="FileAppender"/>
        </Root>
    </Loggers>
</Configuration>

在上述配置中,由于兩個appender的LevelFilter條件相同,導致每條INFO級別的日志都會同時被兩個appender記錄,產生了重復日志。

可以使用不同的過濾器策略來確保日志只被一個appender記錄:

<Configuration status="WARN">
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d [%t] %-5level: %msg%n%throwable"/>
            <Filters>
                <LevelFilter level="INFO" notallow="ACCEPT" notallow="DENY"/>
            </Filters>
        </Console>
        <File name="FileAppender" fileName="app.log">
            <PatternLayout pattern="%d [%t] %-5level: %msg%n%throwable"/>
            <Filters>
                <LevelFilter level="DEBUG" notallow="ACCEPT" notallow="DENY"/>
                <LevelFilter level="INFO" notallow="DENY" notallow="DENY"/>
            </Filters>
        </File>
    </Appenders>
    <Loggers>
        <Root level="DEBUG">
            <AppenderRef ref="ConsoleAppender"/>
            <AppenderRef ref="FileAppender"/>
        </Root>
    </Loggers>
</Configuration>

在這個配置中,ConsoleAppender只記錄INFO級別及以上的日志,而FileAppender記錄DEBUG級別但排除INFO級別的日志。這樣可以避免INFO級別的日志被兩個appender同時記錄。

責任編輯:武曉燕 來源: 撿田螺的小男孩
相關推薦

2025-02-26 00:33:59

Java編程程序

2025-04-29 10:17:42

2024-04-01 08:05:27

Go開發Java

2025-06-03 06:30:05

2023-12-14 17:34:22

Kubernetes集群K8s

2024-05-06 00:00:00

緩存高并發數據

2019-08-12 11:18:12

機器學習數據集模型

2019-09-25 15:30:15

2018-04-08 22:16:21

2021-03-04 10:16:30

Java語言IT

2019-05-20 09:09:44

Web前端JavaScript

2023-03-13 13:36:00

Go擴容切片

2018-09-11 09:14:52

面試公司缺點

2020-03-31 09:47:04

Vue開發代碼

2022-04-26 21:49:55

Spring事務數據庫

2020-06-12 11:03:22

Python開發工具

2025-10-24 15:52:19

2017-07-17 15:46:20

Oracle并行機制

2015-06-15 09:49:22

Docker開源平臺虛擬化容器

2025-07-08 09:09:32

MySQL類型
點贊
收藏

51CTO技術棧公眾號

www日韩tube| 日本三级欧美三级| 精品国产一区二| 亚洲主播在线观看| 欧美成人第一区| 91精品人妻一区二区三区果冻| 欧美va天堂| 亚洲欧美色图片| 毛片毛片毛片毛片毛| 九九色在线视频| 久久久99久久| 97中文在线观看| 中文字幕高清在线免费播放| 欧美91大片| 亚洲日本成人网| 欧美图片自拍偷拍| 成人黄色免费网站| 午夜成人在线视频| 一区二区在线不卡| 免费在线观看污视频| 国产成人啪午夜精品网站男同| 日韩美女视频免费看| 私库av在线播放| 波多野结衣在线播放一区| 精品国产乱码久久久久久久| 91精产国品一二三产区别沈先生| 中文字幕人成乱码在线观看| 成人看av片| 日韩国产精品91| 久久久久久国产精品久久| 天美传媒免费在线观看| 婷婷精品在线| 亚洲激情自拍图| 91香蕉视频在线观看视频| av有声小说一区二区三区| 一区二区高清在线| 国产美女视频免费| www.在线播放| 国产午夜亚洲精品羞羞网站| 久久久久久久久久久久久久一区 | 国产精品嫩草影院久久久| 亚洲国产综合久久| 欧美日本亚洲韩国国产| 俺去啦;欧美日韩| 亚州欧美一区三区三区在线 | 好吊妞视频一区二区三区| 综合久久久久| 久久久精品国产亚洲| 青青青视频在线播放| 深爱激情久久| 亚洲日本成人女熟在线观看| 国产成人精品无码免费看夜聊软件| 成人性生交大片免费看中文视频| 日韩一区二区在线观看视频| 久久艹这里只有精品| 国产欧美日韩电影| 91精品国产欧美一区二区成人| 婷婷六月天在线| 国产成人精品一区二区三区在线 | 欧美亚洲大陆| 亚洲黄色片网站| 色综合久久五月| 精品综合久久88少妇激情| 日韩欧美国产麻豆| 无码国产精品一区二区免费式直播 | 91视频这里只有精品| 99久久er| 欧美一区二区三区人| 2025中文字幕| 久久97精品| 亚洲人成在线观看网站高清| 亚洲欧美va天堂人熟伦| 亚洲色图国产| 久久免费国产视频| 国产午夜性春猛交ⅹxxx| 99精品国产在热久久下载| 日本高清不卡的在线| 最近国语视频在线观看免费播放| 免费观看在线色综合| 成人久久一区二区| 国产黄色片网站| 波多野结衣在线一区| 日本一区二区三区视频在线观看| 青青影院在线观看| 亚洲国产日韩av| 哪个网站能看毛片| 国产精区一区二区| 日韩精品欧美激情| 成人自拍小视频| 日韩视频一区| 国产精品夜色7777狼人| 亚洲成人中文字幕在线| 久久久夜色精品亚洲| 操bbb操bbb| 最近在线中文字幕| 欧美男生操女生| 东京热av一区| 日韩成人激情| 久久久久久久久久久免费| 无码日韩精品一区二区| 国产精品一区二区久激情瑜伽 | 国产精品99久久久久久久久| 国产叼嘿视频在线观看| 久久天堂av综合合色蜜桃网| 欧美日韩一区二区三区电影| 天堂电影一区| 欧美一区欧美二区| 成都免费高清电影| 国产主播一区| 国产精品亚洲精品| 桃花色综合影院| 亚洲视频中文字幕| 激情婷婷综合网| 国产精品毛片久久久| 正在播放欧美一区| 亚洲精品视频在线观看免费视频| 久久99国产精品免费| 久久久久久久久久久久久久久久av| 99视频免费在线观看| 在线看国产一区二区| 在线观看免费视频国产| 午夜精品久久久久久久四虎美女版| 8x拔播拔播x8国产精品| 午夜精品久久久久久久99热黄桃 | 欧美精品成人久久| 老司机精品视频在线| 奇米888一区二区三区| 欧美v亚洲v| 欧美一区二区三区人| www.黄色com| 日本不卡视频一二三区| 蜜桃麻豆91| 99thz桃花论族在线播放| 日韩欧美第一区| 四虎精品免费视频| 麻豆国产精品一区二区三区| 日本亚洲自拍| 在线成人视屏| 亚洲色图35p| 亚洲综合久久网| www日韩大片| www.爱色av.com| 农村少妇一区二区三区四区五区| 欧美理论片在线观看| 国产精品国产三级国产普通话对白| 国产三级精品三级在线专区| 午夜精品久久久内射近拍高清| 先锋影音国产精品| 青草青草久热精品视频在线观看| 天天摸天天干天天操| 亚洲成人av免费| av免费观看不卡| 激情欧美亚洲| 激情欧美一区二区三区中文字幕| 草美女在线观看| 亚洲第一综合天堂另类专| 国产一级免费观看| 成人高清伦理免费影院在线观看| 日本久久久网站| 国产精品成人自拍| 5278欧美一区二区三区| 你懂的免费在线观看视频网站| 日韩欧美在线播放| 强伦人妻一区二区三区| 日韩制服丝袜av| 亚洲欧洲精品一区二区三区波多野1战4| 精品久久久网| 欧美大胆a视频| 东京干手机福利视频| 五月综合激情网| 在线观看国产精品一区| 久久精品国产久精国产| 免费日韩在线观看| 女仆av观看一区| 国产美女主播一区| 天使と恶魔の榨精在线播放| 日韩av在线播放资源| 中文字幕男人天堂| 有坂深雪av一区二区精品| 青青草视频网站| 日韩黄色片在线观看| 欧美日韩一区二区三区电影| 日韩mv欧美mv国产网站| 国产精品久久久久久久久久99| 最新av在线播放| 日韩av网址在线| 一级久久久久久久| 亚洲一区影音先锋| 1024手机在线观看你懂的| 国产精品综合一区二区| 能在线观看的av| 国产国产精品| 免费久久99精品国产自| 成人日韩视频| 日韩av手机在线观看| 直接在线观看的三级网址| 亚洲美女福利视频网站| 国产草草影院ccyycom| 精品福利在线看| 国产精品15p| 海角国产乱辈乱精品视频| 欧美日韩影视| 日韩小视频在线观看专区| 国产美女激情视频| 亚洲欧美激情插| 国产精品成人无码免费| 成人91在线观看| 视频区 图片区 小说区| 欧美亚洲网站| 免费人成在线观看视频播放| 久久久综合色| 欧美激情国产日韩| 最新精品在线| 成人免费网视频| 婷婷激情一区| 国产91精品青草社区| 成人在线免费看黄| 这里只有精品在线播放| 青青草免费在线视频| 日韩欧美一区二区免费| 在线观看黄色网| 日韩欧美在线免费观看| 免费看一级一片| 一区在线中文字幕| 亚洲综合欧美综合| 久久久精品一品道一区| 白嫩情侣偷拍呻吟刺激| 国产乱码精品1区2区3区| 亚洲激情在线观看视频| 性欧美xxxx大乳国产app| 人妻少妇精品久久| 精品二区视频| 红桃一区二区三区| 亚洲一级毛片| 色婷婷777777仙踪林| 欧美独立站高清久久| 污视频在线免费观看一区二区三区 | 日韩欧美一区二区三区| 西西44rtwww国产精品| 亚洲国产精品欧美一二99| 草视频在线观看| 一区二区三区四区乱视频| 成人免费毛片东京热| 亚洲人一二三区| 乱h高h女3p含苞待放| 一区二区三区在线看| 欧美精品一区二区蜜桃| 一区二区三区欧美在线观看| 青青草激情视频| 亚洲综合在线视频| 久久97人妻无码一区二区三区| 一卡二卡三卡日韩欧美| 久久久久久福利| 天天免费综合色| 日本中文字幕久久| 欧美三级三级三级| 国产一区二区三区视频免费观看| 欧美酷刑日本凌虐凌虐| 国产情侣激情自拍| 欧美成人三级电影在线| 欧美天堂在线视频| 日韩电影在线观看中文字幕| 欧美黄色小说| 在线亚洲男人天堂| 91亚洲天堂| 久久欧美在线电影| 亚洲承认视频| 国产日韩专区在线| xxxx日韩| 品久久久久久久久久96高清| 欧美国产美女| 可以看毛片的网址| 久久成人国产| 久久久精品高清| 国产v综合v亚洲欧| 欧美深性狂猛ⅹxxx深喉 | 精品国产免费人成电影在线观看四季| 肥臀熟女一区二区三区| 日韩久久免费电影| av免费在线一区二区三区| 美日韩精品视频免费看| 九色porny自拍视频在线观看| 国产福利精品视频| 奇米一区二区| 免费观看国产成人| 香蕉av一区二区| 亚洲精品无码久久久久久| 麻豆一区二区三| 妖精视频一区二区| 国产欧美综合在线观看第十页| 国产免费无码一区二区视频| 色综合欧美在线| www.成人免费视频| 亚洲精品网址在线观看| 麻豆影院在线| 欧美亚洲激情在线| av国产精品| 欧美高清性xxxxhd | 欧美大尺度在线观看| 亚洲天堂手机| av观看久久| 日韩激情在线| 免费在线观看亚洲视频| 麻豆精品视频在线观看| 欧美xxxxx精品| 亚洲图片你懂的| 丰满人妻一区二区三区四区| 精品999在线播放| 日韩伦理在线电影| 欧美一区亚洲一区| 136导航精品福利| 在线看视频不卡| 久久亚洲精品伦理| 逼特逼视频在线观看| 亚洲私人黄色宅男| 人妻中文字幕一区二区三区| 亚洲精品国产免费| av片在线观看网站| 国产精品网站视频| 国产在视频线精品视频www666| www.av蜜桃| 国产精品99久久久久久宅男| 成年人在线免费看片| 欧美性生交xxxxx久久久| 成人乱码一区二区三区| 欧美精品一本久久男人的天堂| 欧美aaa级| 日韩欧美亚洲日产国| 久久高清免费观看| 国产成人精品无码片区在线| 一区二区免费视频| 精品久久久久中文慕人妻| 久久久精品视频在线观看| 日韩久久99| 亚洲在线色站| 男女激情视频一区| 中文字幕 自拍| 日韩欧美亚洲综合| 猫咪在线永久网站| 全球成人中文在线| 在线视频亚洲专区| 久草精品在线播放| 久久青草国产手机看片福利盒子| 日韩一区二区视频在线| 亚洲精品自在久久| 欧美成人ⅴideosxxxxx| 日韩精品不卡| 奇米精品一区二区三区四区| 国产精品成人在线视频| 欧美色涩在线第一页| 色网站免费在线观看| 91久久久久久| 国产综合自拍| 五月开心播播网| 在线免费观看一区| av国产在线观看| 亚洲专区在线视频| 久久久久久久久艹| 在线亚洲免费视频| 在线观看免费版| 91在线观看免费网站| 欧美欧美全黄| 日本69式三人交| 日本道色综合久久| 黄色动漫在线观看| www久久99| 亚洲综合精品| 人妻互换一区二区激情偷拍| 欧美一区二区视频网站| 超碰在线97国产| 欧美性xxxx69| 蜜桃一区二区三区四区| 欧美国产日韩在线观看成人| 精品盗摄一区二区三区| 在线一区av| 一区二区三区在线视频看| 国产高清不卡一区| 国产精品777777| 精品国产一区av| 久久久久观看| 亚洲欧美日本一区二区三区| 亚洲主播在线播放| 久草视频在线看| 91在线免费观看网站| 在线视频观看日韩| 欧美另类69xxxx| 精品国产3级a| av成人免费| 日本福利视频一区| 国产欧美日韩在线观看| 性猛交富婆╳xxx乱大交天津 | 日韩精品人妻中文字幕| 国产亚洲精品日韩| 亚洲精选av| 婷婷丁香激情网| 亚洲国产精品一区二区www在线| 国产中文字幕在线| 成人黄色片视频网站| 轻轻草成人在线| 中国一级特黄毛片|