<bdo id="k5gtg"></bdo>
    1. <abbr id="k5gtg"><listing id="k5gtg"></listing></abbr>
    2. <rt id="k5gtg"><menu id="k5gtg"></menu></rt>
      1. <center id="k5gtg"><big id="k5gtg"></big></center>
        豆国产97在线 | 亚洲,综合在线 亚洲 成人 欧美 ,久久久久国产精品熟女影院,亚洲精品国产av成拍色拍个,国产福利酱国产一区二区,在线无码午夜福利高潮视频,久久精品蜜芽亚洲国产AV,欧美视频精品免费覌看

        Springboot2 集成log4j2

        在任何定制系統開發過程中,健全的日志系統是調試、運維、追查故障的重要保障,因為log4j頻頻爆出漏洞,魁鯨科技目前主要使用log4j2這個組件替代

        基礎步驟

        • Spring Boot默認使用的是logback框架,因此需要排除spring-boot-starter-logging
        • 然后引入log4j2框架
        • 配置文件設置使用log4j2的配置路徑
        • 程序代碼種使用日志門面slf4j框架打印日志。

        修改pom.xml文件

        spring-boot-starter-web種排除默認的logging包

        <!-- springboot dependencies -->
                  <dependency>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-web</artifactId>
                      <version>${spring-boot-starter.version}</version>
                      <exclusions>
                          <exclusion>
                              <groupId>org.springframework.boot</groupId>
                              <artifactId>spring-boot-starter-logging</artifactId>
                          </exclusion>
                      </exclusions>
                  </dependency>

        通過依賴樹排除第三方的框架內對logback等沖突包的依賴
        Springboot2 集成log4j2

        Springboot2 集成log4j2

        找到并排除

        Springboot2 集成log4j2

        在resource目錄下新增log4j2的配置文件

        <?xml version="1.0" encoding="UTF-8"?> <!--日志級別以及優先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <!--Configuration后面的status,這個用于設置log4j2自身內部的信息輸出,可以不設置,當設置成trace時,你會看到log4j2內部各種詳細輸出--> <!--monitorInterval:Log4j能夠自動檢測修改配置 文件和重新配置本身,設置間隔秒數-->
        <configuration status="WARN" monitorInterval="30">  <!-- 配置日志文件輸出目錄,此配置將日志輸出到tomcat根目錄下的指定文件夾 -->
            <properties>
                <property name="LOG_HOME">./WebAppLogs/logs</property>
            </properties>
            <!--先定義所有的appender-->
            <appenders>    <!-- 優先級從高到低分別是 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL -->
                <!-- 單詞解釋: Match:匹配 DENY:拒絕 Mismatch:不匹配 ACCEPT:接受 -->
                <!-- DENY,日志將立即被拋棄不再經過其他過濾器; NEUTRAL,有序列表里的下個過濾器過接著處理日志; ACCEPT,日志會被立即處理,不再經過剩余過濾器。 -->
                <!--輸出日志的格式     %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生產時間     %p : 日志輸出格式     %c : logger的名稱     %m : 日志內容,即 logger.info("message")     %n : 換行符     %C : Java類名     %L : 日志輸出所在行數     %M : 日志輸出所在方法名     hostName : 本地機器名     hostAddress : 本地ip地址 -->
                <!--這個輸出控制臺的配置-->
                <console name="Console" target="SYSTEM_OUT">      <!--輸出日志的格式-->
                    <PatternLayout pattern="[%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{1.} - %m%n"/>
                    <!--<PatternLayout pattern="[%d{HH:mm:ss:SSS}] - (%F:%l) - %m%n"/>-->
                    <!--<PatternLayout pattern="[%d{HH:mm:ss:SSS}] (%F:%L) %m%n" />-->
                </console>
                <!-- 這個會打印出所有的info及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
                <!-- TRACE級別日志 ; 設置日志格式并配置日志壓縮格式,壓縮文件獨立放在一個文件夾內, 日期格式不能為冒號,否則無法生成,因為文件名不允許有冒號,此appender只輸出trace級別的數據到trace.log -->
        
                <RollingFile name="RollingFileTrace" immediateFlush="true" fileName="${LOG_HOME}/trace.log"
                             filePattern="${LOG_HOME}/trace_%d{yyyy-MM-dd-HH}-%i.log.zip">
                    <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
        
                    <PatternLayout pattern="[%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n"/>
        
                    <Policies>
                        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        
                        <SizeBasedTriggeringPolicy size="10 MB"/>
        
                    </Policies>
                    <!-- DefaultRolloverStrategy屬性如不設置,則默認為最多同一文件夾下7個文件,這里設置了20 -->
                    <DefaultRolloverStrategy max="20">
                        <!--這里的age必須和filePattern協調, 后者是精確到HH, 這里就要寫成xH, xd就不起作用           另外, 數字最好>2, 否則可能造成刪除的時候, 最近的文件還處于被占用狀態,導致刪除不成功!-->
        
                        <Delete basePath="${LOG_HOME}" maxDepth="2">
                            <IfFileName glob="trace_*.zip"/>
                            <!-- 保存時間與filePattern相同即可 -->
                            <!-- 如果filePattern為:yyyy-MM-dd-HH:mm:ss, age也可以為5s,表示日志存活時間為5s -->
                            <IfLastModified age="168H"/>
        
                        </Delete>
        
                    </DefaultRolloverStrategy>
        
                </RollingFile>
        
                <RollingFile name="RollingFileDebug" immediateFlush="true" fileName="${LOG_HOME}/debug.log"
                             filePattern="${LOG_HOME}/debug_%d{yyyy-MM-dd-HH}-%i.log.zip">
                    <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
        
                    <PatternLayout pattern="[%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n"/>
        
                    <Policies>
                        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        
                        <SizeBasedTriggeringPolicy size="10 MB"/>
        
                    </Policies>
        
                    <DefaultRolloverStrategy max="20">
                        <Delete basePath="${LOG_HOME}" maxDepth="2">
                            <IfFileName glob="debug_*.zip"/>
        
                            <IfLastModified age="168H"/>
        
                        </Delete>
        
                    </DefaultRolloverStrategy>
        
                </RollingFile>     <!-- info日志配置 -->
                <RollingFile name="RollingFileInfo" immediateFlush="true"
                             fileName="${LOG_HOME}/info.log"
                             filePattern="${LOG_HOME}/info_%d{yyyy-MM-dd-HH}-%i.log.zip">       <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
                    <ThresholdFilter
                            level="info" onMatch="ACCEPT" onMismatch="DENY"/>
                    <PatternLayout
                            pattern="[%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n"/>
                    <Policies>
                        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        
                        <SizeBasedTriggeringPolicy size="10 MB"/>
        
                    </Policies>
                    <DefaultRolloverStrategy max="20">
                        <Delete basePath="${LOG_HOME}" maxDepth="2">
                            <IfFileName glob="info_*.zip"/>
        
                            <IfLastModified age="168H"/>
        
                        </Delete>
        
                    </DefaultRolloverStrategy>
                </RollingFile>     <!-- warn日志配置 -->
                <RollingFile name="RollingFileWarn"
                             immediateFlush="true"
                             fileName="${LOG_HOME}/warn.log" filePattern="${LOG_HOME}/warn_%d{yyyy-MM-dd-HH}-%i.log.zip">
                    <ThresholdFilter
                            level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
                    <PatternLayout
                            pattern="[%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n"/>
                    <Policies>
                        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        
                        <SizeBasedTriggeringPolicy size="10 MB"/>
        
                    </Policies>
                    <DefaultRolloverStrategy max="20">
                        <Delete basePath="${LOG_HOME}" maxDepth="2">
                            <IfFileName glob="warn_*.zip"/>
        
                            <IfLastModified age="168H"/>
        
                        </Delete>
        
                    </DefaultRolloverStrategy>
                </RollingFile>     <!-- error日志配置 -->
                <RollingFile
                        name="RollingFileError" immediateFlush="true"
                        fileName="${LOG_HOME}/error.log" filePattern="${LOG_HOME}/error_%d{yyyy-MM-dd-HH}-%i.log.zip">
                    <ThresholdFilter
                            level="error" onMatch="ACCEPT" onMismatch="DENY"/>
                    <PatternLayout
                            pattern="[%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n"/>
                    <Policies>
                        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        
                        <SizeBasedTriggeringPolicy size="10 MB"/>
        
                    </Policies>
                    <DefaultRolloverStrategy max="20">
                        <Delete basePath="${LOG_HOME}" maxDepth="2">
                            <IfFileName glob="error_*.zip"/>
        
                            <IfLastModified age="168H"/>
        
                        </Delete>
        
                    </DefaultRolloverStrategy>
                </RollingFile>
            </appenders>   <!--然后定義logger,只有定義了logger并引入的appender,appender才會生效-->
            <loggers>
                <!--過濾掉spring和mybatis的一些無用的DEBUG信息-->
                <logger name="org.springframework" level="INFO"/>
        
                <logger name="org.mybatis" level="INFO"/>
        
                <root level="all">
                    <appender-ref ref="Console"/>
        
                    <appender-ref ref="RollingFileDebug"/>
        
                    <appender-ref ref="RollingFileTrace"/>
        
                    <appender-ref ref="RollingFileInfo"/>
        
                    <appender-ref ref="RollingFileWarn"/>
        
                    <appender-ref ref="RollingFileError"/>
        
                </root>
        
            </loggers>
        </configuration>

        配置application.yml

        server:
          port: 8080
        spring:
          banner:
            charset: utf-8
        logging:
          level:
            # 根據不同的類設定不同級別
            root: info
            study.*: debug
            nobyte.*: debug
          config: classpath:log4j2-spring.xml
        

         

        使用slf4j打印

        package study.springboot.ioc;
        
        import lombok.extern.slf4j.Slf4j;
        import org.springframework.context.annotation.Lazy;
        import org.springframework.stereotype.Component;
        
        /**
         * CustomService
         *
         * @author linkanyway
         * @version 1.0
         * @date 2022/04/06 20:37
         */
        @Component("CustomService")
        @Slf4j
        public class CustomServiceImpl implements CustomService {
        
            /**
             * 構造器
             */
            public CustomServiceImpl() {
                log.debug ("CustomService被實例化,容器裝配制定了Lazy因此容器裝載時候不會立刻初始化,只有第一次調用才會初始化");
            }
        
            /**
             * 重載print方法
             */
            @Override
            public void print() {
            log.debug (this.getClass ().getCanonicalName ()+" 被調用了print方法");
            }
        }

         

        相關新聞

        • CRM開發市場大盤點及趨勢分析?

          CRM開發市場大盤點及趨勢分析?

          CRM開發公司永遠在努力讓客戶滿意,但2023年CRM市場讓這些CRM公司滿意嗎?大家好像都在瞄準中小企業市場,推出在線的CRM,也推出一些新的CRM應用,讓CRM不滿足于讓客戶滿意,它已經成為更廣義的信息化產品了。 ? ? ? ?CRM買方最關注的依然是客戶管理的核心功能,如銷售、訂單管理和客戶服務。這些常規類目被視為企業成功經營的關鍵。同時隨著各行業市場飽和度的增加,大部分企業對留住現有客戶的興趣大大超越了生成新客戶,這一要求又促發了對使用CRM來大幅改善客戶體驗的需要。 客戶對CRM的要求…

          新聞中心 2024-03-30
        • 倉庫JIT是什么意思?

          倉庫JIT是什么意思?

          倉庫管理中的JIT(Just-In-Time)策略:核心邏輯、實施路徑與系統性挑戰 JIT(準時制生產)不僅是一種庫存管理方法,更是圍繞供應鏈精確協同的生產哲學。其核心目標在于通過精準的時間規劃與需求拉動,實現庫存水平最小化,從而降低資金占用、倉儲成本及物料損耗,最終提升整體運營效率與市場響應速度。 一、JIT的運作本質:從“推式”到“拉式”的系統轉變 傳統庫存管理常基于預測進行物料儲備(“推式”系統),容易導致庫存積壓或短缺。JIT則構建“拉式”系統,即后續工序僅在前道工序提出確切需求時才進行…

        • 電商類系統中會員等級的設定

          電商類系統中會員等級的設定

          電商系統中會員等級需求是指針對一個特定的會員計劃或者會員制度,會員需要達到一定的條件或者標準才能夠晉升到更高的會員等級,從而享受更多的優惠和福利。這種制度通常被應用在零售業、酒店業、航空業、電商平臺等行業中,是企業吸引和保持忠誠會員的一種有效手段。 為什么企業需要會員等級制度? 會員等級制度對于企業來說,是一種非常重要的營銷手段,因為這可以促進客戶忠誠度的提高,從而提升品牌知名度和市場份額。在競爭激烈的市場環境中,企業需要吸引和保持客戶,而會員等級制度可以為客戶提供額外的激勵,從而使他們更傾向于…

          新聞中心 2023-04-10
        • 智能經銷商系統開發

          智能經銷商系統開發

          在當今互聯網快速發展的時代,許多產品,特別是那些需求量不大的非快消品或有技術含量的產品,常常通過經銷商銷售,而此時經銷商的作用自然是不容置疑的,但是傳統的經銷商管理問題漏洞百出,面對諸多挑戰,智能經銷商系統逐漸走向企業市場的視野前端。 一、目前經銷商管理痛點: 1、經銷商素質參差不齊,難以管控 經銷商的質量參差不齊,知識水平參差不齊。不同經銷商的教育背景、行業經驗和知識儲備存存在很大差異,導致他們在理解和實施銷售策略、產品知識、市場趨勢等方面存在差異。經銷商和制造商的不同經營理念和價值觀影響著長…

          新聞中心 2024-10-12
        • Agent Skills與MCP:能力擴展的兩種邏輯與工程實踐

          Agent Skills與MCP:能力擴展的兩種邏輯與工程實踐

          在構建企業級AI智能體的過程中,我們常面臨一個架構選擇:如何處理智能體與外部世界的連接與協作?2024至2025年間,兩種主要范式逐漸清晰——Model Context Protocol(MCP)與Agent Skills。本文將從工程實現與設計哲學層面,解析兩者的本質區別、適用場景與協同模式。 一、問題根源:連接性不等于能力 MCP解決了智能體“能夠連接”的問題。它通過標準化協議(如JSON-RPC)封裝了對外部工具、API或數據源的調用,使智能體能安全地執行如數據庫查詢、文件讀寫等原子操作?!?/p>

        • 開發一個軟件需要多少錢和時間

          開發一個軟件需要多少錢和時間

          軟件開發成本與周期估算:一個技術管理的視角 在軟件行業,關于“多少錢”和“多久”的問題,最準確的回答或許是:“這取決于您的選擇”。一個看似相同的功能,其背后不同的技術實現路徑,會直接導致成本和時間產生數量級的差異。與其給出模糊的區間,不如從一個具體的技術管理案例,來拆解其中的決定性變量。 一、以案例切入:技術選擇如何塑造預算 我曾主導過一個“醫療健康隨訪管理系統”的開發??蛻舫跗谧稍兞巳夜蹋瑘髢r從20萬到100萬,周期從2個月到6個月不等。最終,我們以48萬元的預算和4個月的周期完成了項目…

        • 工廠倉庫管理系統erp都一樣嗎?工廠倉庫管理系統erp入庫流程

          工廠倉庫管理系統erp都一樣嗎?工廠倉庫管理系統erp入庫流程

          很多工廠老板都有這樣的一個疑惑,那就是工廠倉庫管理系統erp都一樣嗎?其實是存在一定差異的。因為不同ERP系統的倉庫管理系統在業務細化需求、功能深度、行業適配性以及技術實現方式等都有不同之處,像一些大型的工廠,它的業務繁多,那么相對應的人員以及貨物管理流程也會復雜,那么功能模塊就需要更加精細化,盡量避免溝通運營成本。 一、倉庫管理系統類型 1. ?功能差異? ?基礎型ERP?(如部分通用系統): 僅支持入庫、出庫、庫存查詢等基礎功能,缺乏與生產、采購的深度聯動。 ?示例?:某些中小型ERP僅提供…

          FAQ 2025-05-04
        • 軟件外包公司排名前十名有哪些

          軟件外包公司排名前十名有哪些

          我曾花費大量時間研究“軟件外包公司排名前十”這個問題。我發現,市場上并沒有一個絕對的、固定的榜單,但綜合多個行業報告和實際市場表現,有幾家公司的名字反復出現在前列,它們憑借各自的戰略定位,形成了差異化的市場格局。 選擇合作伙伴,遠不止看一個名字。以我接觸和了解的情況來看,頭部企業通常可以分為幾個清晰的類型。軟通動力和中軟國際是典型的全棧式綜合服務商,規模龐大,行業覆蓋廣,尤其在與國內科技巨頭的生態合作(如華為鴻蒙、云計算)方面構筑了深厚的壁壘。對于需要復雜集成和長期技術協同的大型項目,它們是優先…

        • 企業管理ERP系統定制開發:面向不同規模企業的全業務場景解決方案

          企業管理ERP系統定制開發:面向不同規模企業的全業務場景解決方案

          在數字化轉型的浪潮下,企業資源計劃(ERP)系統已成為現代企業管理的重要工具。無論是初創企業、中小型企業還是大型集團,一套高效、靈活的ERP系統能夠整合業務流程,優化資源配置,提升運營效率。然而,不同規模、不同行業的企業對ERP的需求差異顯著,標準化產品往往難以滿足個性化需求,因此,定制化ERP開發成為越來越多企業的選擇。 一、為什么企業需要定制化ERP系統? 1、業務場景多樣化 制造業:需管理生產計劃、供應鏈、質量控制等。 零售業:需整合線上線下銷售、庫存、會員管理等。 服務業:需優化項目管理…

          新聞中心 2025-07-31
        • 專業上門家教服務小程序開發:提升教育品質與便捷性

          專業上門家教服務小程序開發:提升教育品質與便捷性

          在當今快節奏、競爭激烈的社會環境中,教育作為個人成長和家庭發展的重要基石,其質量和便利性已成為社會各界關注的焦點。隨著科技的快速發展和互聯網+ 教育模式的興起,它給傳統的教育形式帶來了前所未有的變化。其中,專業上門家教服務小程序的開發是這一變化浪潮中的一股清流。它不僅大大提高了教育質量,而且大大提高了教育服務的便利性,為大多數學生和家庭帶來了新的學習體驗。那么專業上門家教服務小程序開發有什么好處? 1、打破區域限制,實現優質教育資源均衡 傳統的輔導服務往往受到地理位置的限制,學生很難接觸到他們最…

          新聞中心 2024-08-20
        在線溝通
        客服微信
        客服微信
        在線咨詢
        聯系我們

        聯系我們

        400-103-7662

        售前咨詢郵箱:
        sales@king-v.com

        工作時間:
        法定工作日 9:00-18:00

        返回頂部