日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

项目构建之springboot集成lomback.xml,和log4j基于properties方式的日志配置记录

發布時間:2025/3/12 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 项目构建之springboot集成lomback.xml,和log4j基于properties方式的日志配置记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

      • springboot集成lomback.xml 描述
      • 在yml中定義的一些配置信息
      • 創建logback-spring.xml文件
      • logback-spring.xml配置如下:
      • **log4j入門配置**
      • **詳細介紹配置信息的:**
      • **自動清理導出的日志文件**


springboot集成lomback.xml 描述

首先在resouces目錄下創建一個logback-spring.xml文件,為什么叫這個名字呢?

是因為logback默認的會從資源目錄讀取這個文件

配置xml文件中需要用到兩個標簽。

springProperty和springProfile標簽,都是用于讀取yml(yaml)配置文件的。

在yml中定義的一些配置信息

server:port: 9137tomcat:uri-encoding: UTF-8max-threads: 100 #最大并發數max-connections: 200 #最大連接數accepCount: 50 #等待數 #自定義的日志配置參數 logging:path: D:\xxx\ldmall-product-service\src\main\resources\logs #保存日志lv: INFO # 控制臺日志輸出級別dateSize: 1 # 日志保存天數 #郵箱配置參數 email:#主機smtpHost: smtp.qq.com#端口(465或587)smtpPort: 465username: xxx@qq.compassword: xxxxSSL: trueemail_from: from@qq.comemail_to: to@qq.com

創建logback-spring.xml文件

同事記得在resources目錄下創建一個logs文件夾,用于存儲項目運行,生成的日志文件

logback-spring.xml配置如下:

我這里把發送郵箱注釋掉了

提示:

  • 由于logback-spring.xml先于application.yml被系統加載,所以想要引用application.yml文件中的數據,需要加入標簽,引入后怎么獲取到呢?比如想要獲取日志保存天數,就需要引入后面的引用,就只需要${log.dateSize}就可以了,中括號里面的值是springProperty 的name值。
  • springProfile對應的是application.yml文件中的spring.profiles.active的值。
  • 配置文件中的郵件密碼不是郵箱登錄密碼,而是客戶端授權密碼,如何獲取查詢QQ郵箱登陸第三方客戶端獲取授權碼就可以了。
  • <?xml version="1.0" encoding="UTF-8"?> <!-- 日志級別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設置為WARN,則低于WARN的信息都不會輸出 --> <!-- scan:當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true --> <!-- scanPeriod:設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鐘。 --> <!-- debug:當此屬性設置為true時,將打印出logback內部日志信息,實時查看logback運行狀態。默認值為false。 --> <configuration scan="true" scanPeriod="60 seconds" debug="false"><contextName>logback</contextName><!--讀取yml,獲取配置的信息--><property resource="application.yml"/><springProperty scope="context" name="log.path" source="logging.path"/><springProperty scope="context" name="log.lv" source="logging.lv"/><springProperty scope="context" name="log.dateSize" source="logging.dateSize"/><!--輸出到控制臺--><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!--此日志appender是為開發使用,只配置最底級別,控制臺輸出的日志級別是大于或等于此級別的日志信息--><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>${log.lv}</level></filter><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><!--編碼--><charset>utf-8</charset></encoder></appender><!--輸出到debug--><appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在記錄的日志文件的路徑及文件名 --><file>${log.path}/logback-debug.log</file><!-- 日志記錄器的滾動策略,按日期,按大小記錄 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/logback-debug-%d{yyyy-MM-dd}_%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天數--><maxHistory>15</maxHistory></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern><!--編碼--><charset>utf-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印DEBUG日志 --><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--輸出到info--><appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在記錄的日志文件的路徑及文件名 --><file>${log.path}/logback-info.log</file><!-- 日志記錄器的滾動策略,按日期,按大小記錄 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/logback-info-%d{yyyy-MM-dd}_%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天數--><maxHistory>${log.dateSize}</maxHistory></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern><!--編碼--><charset>utf-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印INFO日志 --><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--輸出到warn--><appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在記錄的日志文件的路徑及文件名 --><file>${log.path}/logback-warn.log</file><!-- 日志記錄器的滾動策略,按日期,按大小記錄 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/logback-warn-%d{yyyy-MM-dd}_%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天數--><maxHistory>${log.dateSize}</maxHistory></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>utf-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印WARN日志 --><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--輸出到error--><appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在記錄的日志文件的路徑及文件名 --><file>${log.path}/logback-error.log</file><!-- 日志記錄器的滾動策略,按日期,按大小記錄 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/logback-error-%d{yyyy-MM-dd}_%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天數--><maxHistory>${log.dateSize}</maxHistory></rollingPolicy><append>true</append><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern><charset>utf-8</charset></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印ERROR日志 --><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- &lt;!&ndash;郵件配置&ndash;&gt;<springProperty scope="context" name="smtpHost" source="email.smtpHost"/>&lt;!&ndash; SMTP server的端口地址。 &ndash;&gt;<springProperty scope="context" name="smtpPort" source="email.smtpPort"/>&lt;!&ndash; 發送郵件賬號 &ndash;&gt;<springProperty scope="context" name="username" source="email.username"/>&lt;!&ndash; 發送郵件密碼(此密碼客戶端授權密碼,不是郵箱登錄密碼) &ndash;&gt;<springProperty scope="context" name="password" source="email.password"/>&lt;!&ndash; 如果設置為true,appender將會使用SSL連接到日志服務器。默認值:false &ndash;&gt;<springProperty scope="context" name="SSL" source="email.SSL"/>&lt;!&ndash; 指定收件人郵箱,可設置多個郵箱,收件人賬號需以逗號隔開 &ndash;&gt;<springProperty scope="context" name="email_to" source="email.email_to"/>&lt;!&ndash; 指定發件人名稱。 &ndash;&gt;<springProperty scope="context" name="email_from" source="email.email_from"/>&lt;!&ndash; 標題 &ndash;&gt;<property name="email_subject" value="【System Error】: %msg" />&lt;!&ndash; 郵件發送的appender &ndash;&gt;<appender name="Email" class="ch.qos.logback.classic.net.SMTPAppender"><smtpHost>${smtpHost}</smtpHost><smtpPort>${smtpPort}</smtpPort><username>${username}</username><password>${password}</password><asynchronousSending>false</asynchronousSending><SSL>${SSL}</SSL><to>${email_to}</to><from>${email_from}</from><subject>${email_subject}</subject>&lt;!&ndash; html格式 &ndash;&gt;<layout class="ch.qos.logback.classic.html.HTMLLayout"><Pattern>%date - %level [%thread] %logger{50} %line %message</Pattern></layout>&lt;!&ndash; 等級過濾器,指定ERROR級別發送 &ndash;&gt;<filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter>&lt;!&ndash; 每個電子郵件只發送一個日志條目 &ndash;&gt;<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker"><bufferSize>1</bufferSize></cyclicBufferTracker></appender>--><!--不同環境分別設置對應的日志輸出節點 --><!--springProfile對應的是application.yml文件中的spring.profiles.active的值--><!--開發--><springProfile name="dev"><root level="debug"><appender-ref ref="console" /><appender-ref ref="info" /><appender-ref ref="warn" /><appender-ref ref="error" /></root></springProfile><!--測試--><springProfile name="test"><root level="warn"><appender-ref ref="console" /><appender-ref ref="warn" /><appender-ref ref="error" /><!--<appender-ref ref="Email" />--></root></springProfile><!--生產環境--><springProfile name="prod"><root level="info"><appender-ref ref="console" /><appender-ref ref="debug" /><appender-ref ref="info" /><appender-ref ref="warn" /><appender-ref ref="error" /><!-- <appender-ref ref="Email" />--></root></springProfile></configuration>

    log4j入門配置

    一般配置三種輸出:

    第一種是控制臺輸出

    第二種是將日志輸出到一個文件

    第三種是將報錯的信息單獨輸出到一個文件

    依賴: spring-boot-start本身包含了log4j的包,可以不加。也可以自己指定版本。

    <!--log4j日志 --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--log4j-->

    創建log4j.properties文件,配置如下

    ### set log levels ### log4j.rootLogger = debug , stdout , D , E### 輸出到控制臺 ### log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.Threshold = INFO log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n### 輸出到日志文件 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = logs/log.log log4j.appender.D.Append = true log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 保存異常信息到單獨文件 ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File = logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

    也可以用xml的方式配置。

    最終輸出

    控制臺: 設置成了INFO級別

    日志輸出: 設置成了INFO級別

    錯誤日志輸出: 設置成了ERROR級別

    詳細介紹配置信息的:

    ###配置日志根Logger log4j.rootLogger=DEBUG,stdout,file #ERROR 為嚴重錯誤 主要是程序的錯誤 #WARN 為一般警告,比如session丟失 #INFO 為一般要顯示的信息,比如登錄登出 #DEBUG 為程序的調試信息 log4j.additivity.org.apache=true###配置日志信息輸出目的地Appender log4j.appender.stdout=org.apache.log4j.ConsoleAppender #org.apache.log4j.ConsoleAppender(控制臺) #org.apache.log4j.FileAppender(文件) #org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件) #org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件) #org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方) #log4j.appender.error.Target=System.out ###輸出ERROR級別以上的日志 log4j.appender.stdout.threshold=INFO ###配置日志信息的格式(布局) log4j.appender.stdout.layout=org.apache.log4j.PatternLayout #org.apache.log4j.HTMLLayout(以HTML表格形式布局) #org.apache.log4j.PatternLayout(可以靈活地指定布局模式) #org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串) #org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息) ###配置日志打印的格式格式化日志信息 log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n#%m 輸出代碼中指定的消息 #%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL #%r 輸出自應用啟動到輸出該log信息耗費的毫秒數 #%c 輸出所屬的類目,通常就是所在類的全名 #%t 輸出產生該日志事件的線程名 #%n 輸出一個回車換行符,Windows平臺為“\r\n”,Unix平臺為“\n” #%d 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS} #%l 輸出日志事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數 #log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.DatePattern='.'yyyy-MM-dd-HH-mm # '.'yyyy-MM:每月 # '.'yyyy-ww:每周 # '.'yyyy-MM-dd:每天 # '.'yyyy-MM-dd-a:每天兩次 # '.'yyyy-MM-dd-HH:每小時 # '.'yyyy-MM-dd-HH-mm:每分鐘 #log4j.appender.file.MaxFileSize=1MB ###滾動文件的最大數 #log4j.appender.file.MaxBackupIndex=8 log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-30c{1}) [TxId : %X{PtxId} , SpanId : %X{PspanId}] [ET:%X{ENV_TYPE},AN:%X{APP_NAME},SN:%X{SERVICE_NAME},CN:%X{CONTAINER_NAME},CI:%X{CONTAINER_IP}] %m%n log4j.appender.file.Threshold=DEBUG ###將消息增加到指定文件中,false指將消息覆蓋指定的文件內容 log4j.appender.file.append=true ###日志的保存位置 #log4j.appender.file.File=E:/logs/file-debug-log.log log4j.appender.file.File=logs/file-debug-log.log ###每天產生一個日志文件 #log4j.appender.file=org.apache.log4j.DailyRollingFileAppender #log4j.appender.file.layout=org.apache.log4j.PatternLayout #log4j.appender.file.maxFileSize=100 #log4j.appender.file.maxBackupIndex=5 #log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-30c{1}) [TxId : %X{PtxId} , SpanId : %X{PspanId}] [ET:%X{ENV_TYPE},AN:%X{APP_NAME},SN:%X{SERVICE_NAME},CN:%X{CONTAINER_NAME},CI:%X{CONTAINER_IP}] %m%n #log4j.appender.file.Threshold=DEBUG #log4j.appender.file.append=true #log4j.appender.file.File=E:/logs/debug-log.log

    自動清理導出的日志文件

    log4j.rootLogger=INFO,stdout,debug,error#輸出到控制臺 log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %p [%t] %C.%M(%L) | %m%n#輸出DEBUG級別以上的日志到文件 log4j.appender.debug=org.apache.log4j.RollingFileAppender log4j.appender.debug.Threshold=DEBUG log4j.appender.debug.File=./logs/log.txt log4j.appender.debug.layout=org.apache.log4j.PatternLayout log4j.appender.debug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n #最大文件50MB log4j.appender.debug.MaxFileSize=50MB #備份15個文件 log4j.appender.debug.MaxBackupIndex=15 log4j.appender.debug.Encoding=UTF-8#輸出error級別以上的日志到文件 log4j.appender.error=org.apache.log4j.RollingFileAppender log4j.appender.error.Threshold=ERROR log4j.appender.error.File=./logs/error.txt log4j.appender.error.layout=org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n #最大文件50MB log4j.appender.error.MaxFileSize=50MB #備份15個文件 log4j.appender.error.MaxBackupIndex=15 log4j.appender.error.Encoding=UTF-8

    將日志發送到郵件或者存儲到數據庫,可參考:

    https://blog.csdn.net/zzq900503/article/details/31411403

    https://blog.csdn.net/zzq900503/article/details/87629782

    總結

    以上是生活随笔為你收集整理的项目构建之springboot集成lomback.xml,和log4j基于properties方式的日志配置记录的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。