日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

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

來源: 責(zé)編: 時間:2024-06-27 07:57:17 135觀看
導(dǎo)讀前言大家好,我是撿田螺的小男孩.我們?nèi)粘i_發(fā)中,經(jīng)常需要打印日志.但是不當(dāng)?shù)娜罩臼褂每赡軙?dǎo)致各種問題。整理了日志打印的10個坑,希望大家都能避坑~~1.忽視日志級別,反手就是INFO常見的日志級別有5種,分別是error、

前言

大家好,我是撿田螺的小男孩.RLo28資訊網(wǎng)——每日最新資訊28at.com

我們?nèi)粘i_發(fā)中,經(jīng)常需要打印日志.但是不當(dāng)?shù)娜罩臼褂每赡軙?dǎo)致各種問題。整理了日志打印的10個坑,希望大家都能避坑~~RLo28資訊網(wǎng)——每日最新資訊28at.com

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

常見的日志級別有5種,分別是error、warn、info、debug、trace。日常開發(fā)中,我們需要選擇恰當(dāng)?shù)娜罩炯墑e,不要反手就是打印info哈~RLo28資訊網(wǎng)——每日最新資訊28at.com

  • ERROR:錯誤日志,指比較嚴重的錯誤,對正常業(yè)務(wù)有影響,需要運維配置監(jiān)控的;
  • WARN:警告日志,一般的錯誤,對業(yè)務(wù)影響不大,但是需要開發(fā)關(guān)注;
  • INFO:信息日志,記錄排查問題的關(guān)鍵信息,如調(diào)用時間、出參入?yún)⒌鹊龋?/li>
  • DEBUG:用于開發(fā)DEBUG的,關(guān)鍵邏輯里面的運行時數(shù)據(jù);
  • TRACE:最詳細的信息,一般這些信息只記錄到日志文件中

2.過度日志記錄

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

比如這個例子(過度記錄DEBUG級別的日志):RLo28資訊網(wǎng)——每日最新資訊28at.com

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

正例應(yīng)該這樣(僅記錄必要的日志信息)RLo28資訊網(wǎng)——每日最新資訊28at.com

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

我們應(yīng)當(dāng)根據(jù)日志的重要性設(shè)置不同的日志級別(如ERROR、WARN、INFO、DEBUG),只記錄必要的日志信息,避免日志打印處理成流水賬.RLo28資訊網(wǎng)——每日最新資訊28at.com

3.將debug日志直接帶到生產(chǎn)環(huán)境

有些伙伴亂用日志級別,甚至將DEBUG級別的日志用于生產(chǎn)環(huán)境。RLo28資訊網(wǎng)——每日最新資訊28at.com

反例(將DEBUG級別的日志直接用于生產(chǎn)環(huán)境):RLo28資訊網(wǎng)——每日最新資訊28at.com

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

正例 (debug日志級別,最好判斷一下是否開啟):RLo28資訊網(wǎng)——每日最新資訊28at.com

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

4.日志缺少上下文信息

大家可以看下這行日志,覺得有啥問題RLo28資訊網(wǎng)——每日最新資訊28at.com

logger.info("User login request");

很明顯,日志缺少上下文信息,并不方便排查.比如說,你想知道是哪個用戶的登錄請求嘛? 至少把userId 打印出來吧,如下:RLo28資訊網(wǎng)——每日最新資訊28at.com

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

5.同步IO導(dǎo)致性能問題

同步日志記錄會阻塞主線程,影響系統(tǒng)性能。因此使用異步日志框架(比如Log4j 2的異步日志記錄器)來減少對性能的影響。RLo28資訊網(wǎng)——每日最新資訊28at.com

// 使用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.日志配置不合理:

有些日志配置文件復(fù)雜,難以維護;配置文件中存在硬編碼路徑。如下:RLo28資訊網(wǎng)——每日最新資訊28at.com

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

應(yīng)當(dāng)使用靈活的配置RLo28資訊網(wǎng)——每日最新資訊28at.com

// 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.日志內(nèi)容泄露敏感信息

日志中記錄了用戶的敏感信息(如密碼、信用卡號),存在安全風(fēng)險。RLo28資訊網(wǎng)——每日最新資訊28at.com

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

這都把用戶的密碼打印出來了...解決方法就是,不能打印密碼這些關(guān)鍵信息,如果是手機號、郵箱等敏感信息,則可以脫敏、或者掩碼處理。RLo28資訊網(wǎng)——每日最新資訊28at.com

8.日志文件輪轉(zhuǎn)和歸檔配置不當(dāng)。

如果日志文件過大時未能及時輪轉(zhuǎn),就很坑.RLo28資訊網(wǎng)——每日最新資訊28at.com

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

日志要配置合理的輪轉(zhuǎn)和歸檔策略,避免文件過大.RLo28資訊網(wǎng)——每日最新資訊28at.com

// 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.日志框架漏洞的問題

有些日志框架,在低版本,可能會存在安全漏洞問題.甚至有些可能會存在漏洞還沒被發(fā)現(xiàn).RLo28資訊網(wǎng)——每日最新資訊28at.com

我們?nèi)绾巫瞿? 如果是低版本存在安全漏洞的日志框架,我們要盡快升級到最新版本.RLo28資訊網(wǎng)——每日最新資訊28at.com

比如Log4Shell 是Log4j 2.x中一個嚴重的遠程代碼執(zhí)行(RCE)漏洞。攻擊者可以通過特制的日志消息來觸發(fā)JNDI查找請求,從而在受影響的系統(tǒng)上執(zhí)行任意代碼。RLo28資訊網(wǎng)——每日最新資訊28at.com

可以升級到Log4j 2.17.0或更高版本,這些版本已經(jīng)修復(fù)了該漏洞。RLo28資訊網(wǎng)——每日最新資訊28at.com

尚未被發(fā)現(xiàn)的漏洞,也可能潛在地影響應(yīng)用程序的安全性。我們要使用成熟的日志框架,并且要定時更新和維護.RLo28資訊網(wǎng)——每日最新資訊28at.com

10.錯誤配置LevelFilter造成日志重復(fù)記錄

錯誤配置LevelFilter可能導(dǎo)致日志重復(fù)記錄的問題.比如你這樣配置:RLo28資訊網(wǎng)——每日最新資訊28at.com

<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條件相同,導(dǎo)致每條INFO級別的日志都會同時被兩個appender記錄,產(chǎn)生了重復(fù)日志。RLo28資訊網(wǎng)——每日最新資訊28at.com

可以使用不同的過濾器策略來確保日志只被一個appender記錄:RLo28資訊網(wǎng)——每日最新資訊28at.com

<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同時記錄。RLo28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-96759-0.html日志打印的這10個坑,你至少踩過一個...

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 避免消息積壓的終極指南:四個關(guān)鍵技巧

下一篇: 一文搞懂大廠商品中心設(shè)計!

標簽:
  • 熱門焦點
  • Find N3入網(wǎng):最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經(jīng)正式入網(wǎng),型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 小米平板5 Pro 12.4簡評:多專多能 兼顧影音娛樂的大屏利器

    疫情帶來了網(wǎng)課,網(wǎng)課盤活了安卓平板,安卓平板市場雖然中途停滯了幾年,但好的一點就是停滯的這幾年行業(yè)又有了新的發(fā)展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • 6月安卓手機好評榜:魅族20 Pro蟬聯(lián)冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • Automa-通過連接塊來自動化你的瀏覽器

    1、前言通過瀏覽器插件可實現(xiàn)自動化腳本的錄制與編寫,具有代表性的工具就是:Selenium IDE、Katalon Recorder,對于簡單的業(yè)務(wù)來說可快速實現(xiàn)自動化的上手工作。Selenium IDEKat
  • 深度探索 Elasticsearch 8.X:function_score 參數(shù)解讀與實戰(zhàn)案例分析

    在 Elasticsearch 中,function_score 可以讓我們在查詢的同時對搜索結(jié)果進行自定義評分。function_score 提供了一系列的參數(shù)和函數(shù)讓我們可以根據(jù)需求靈活地進行設(shè)置。近期
  • 2023年,我眼中的字節(jié)跳動

    此時此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關(guān)注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強勢崛起,到2018年的&ldquo;頭騰
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內(nèi)容電商的概念興起,抖音、快手、小紅書組成的&ldquo;新電商三兄弟&rdquo;成為業(yè)內(nèi)一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 2022爆款:ROG魔霸6 冰川散熱系統(tǒng)持續(xù)護航

    喜逢開學(xué)季,各大商家開始推出自己的新產(chǎn)品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現(xiàn)在的
  • 中關(guān)村論壇11月25日開幕,15位諾獎級大咖將發(fā)表演講

    11月18日,記者從2022中關(guān)村論壇新聞發(fā)布會上獲悉,中關(guān)村論壇將于11月25至30日在京舉行。本屆中關(guān)村論壇由科學(xué)技術(shù)部、國家發(fā)展改革委、工業(yè)和信息化部、國務(wù)
Top 主站蜘蛛池模板: 古浪县| 清水县| 抚州市| 安溪县| 遂宁市| 宜君县| 威信县| 革吉县| 扶风县| 滁州市| 榆林市| 仁寿县| 杭州市| 新和县| 天长市| 天等县| 新绛县| 三穗县| 团风县| 财经| 万年县| 中超| 西丰县| 连平县| 武定县| 西乌珠穆沁旗| 安化县| 大城县| 新巴尔虎左旗| 石狮市| 南乐县| 泌阳县| 万年县| 巩留县| 平塘县| 哈尔滨市| 枣强县| 南华县| 安达市| 广河县| 新泰市|