最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

SpringBoot定義優(yōu)雅全局統(tǒng)一Restful API 響應(yīng)框架五

2023-05-31 11:25 作者:程序員三時(shí)  | 我要投稿

閑話不多說,繼續(xù)優(yōu)化 「全局統(tǒng)一Restful API 響應(yīng)框架」 ?做到項(xiàng)目通用 接口可擴(kuò)展。

如果沒有看前面幾篇文章請(qǐng)先看前面幾篇

SpringBoot定義優(yōu)雅全局統(tǒng)一Restful API 響應(yīng)框架

SpringBoot定義優(yōu)雅全局統(tǒng)一Restful API 響應(yīng)框架二

SpringBoot定義優(yōu)雅全局統(tǒng)一Restful API 響應(yīng)框架三

SpringBoot定義優(yōu)雅全局統(tǒng)一Restful API 響應(yīng)框架四

這里解決上一篇留下問題 如何實(shí)現(xiàn)接口錯(cuò)誤國(guó)際化。 還有上一篇錯(cuò)誤提示也不是很友好

我們可以在進(jìn)一步抽象出「通用異常接口」。

異常信息應(yīng)由固定異常編碼信息加上詳細(xì)的錯(cuò)誤自定義信息。

上一篇最后錯(cuò)誤 提示依然不夠友好具體。我們可以在具體到哪個(gè)字段

還有未知錯(cuò)誤返回異常,這里之前提到要在·全局異常處理中接入自己的日志輸出處理,我們只是單純的打印在控制臺(tái)??隙ㄊ遣恍?/p>

如果項(xiàng)目中不做任何處理默認(rèn)就會(huì)走Tomcat服務(wù)器日志處理邏輯,輸出到「catalina 文件中」 ?我們這里把這個(gè)問題處理一下。

公共錯(cuò)誤異常類

自定義異常類繼承運(yùn)行時(shí)異常。自定義錯(cuò)誤編碼,和錯(cuò)誤信息枚舉

/**
*?@author?公眾號(hào)?程序員三時(shí)
*?@version?1.0
*?@date?2023/4/29?00:15
*?@webSite?https://github.com/coder-amiao
*?通用業(yè)務(wù)異常封裝
*/

@Data
public?class?BusinessException?extends?RuntimeException?{
???/**
????*?自定義異常編碼
????*/

???private?String?code;

???public?BusinessException(String?code,?String?message)?{
???????super(message);
???????this.code?=?code;
???}

???public?BusinessException(ResultCode?resultCodeEnum)?{
???????super(resultCodeEnum.getMessage());
???????this.code?=?resultCodeEnum.getCode();
???}

???public?BusinessException(ResultCode?resultCodeEnum,?String?msg)?{
???????super(resultCodeEnum.getMessage()?+"?"?+msg);
???????this.code?=?resultCodeEnum.getCode();
???}
}

其他異常類也是如此

這里主要說一下如何把錯(cuò)誤日志輸出到指定服務(wù)器路徑的指定log文件

?

日志文件按照類型和時(shí)間劃分,一天一個(gè)按照指定大小

?

這樣就方便自己查詢錯(cuò)誤日志

日志配置文件

「logback-spring.xml」 springboot約定配置名稱,可以讀取加載屬性文件

<?xml?version="1.0"?encoding="UTF-8"?>
<configuration?scan="true"?scanPeriod="60?seconds"?debug="false">
????<contextName>shop-api</contextName>
????<!--定義日志文件的存儲(chǔ)地址?從springboot配置文件中獲取路徑-->
????<springProperty?scope="context"?name="LOG_PATH"?source="logging.file.path"/>
????<!--springboot配置文件中獲取日志級(jí)別-->
????<springProperty?scope="context"?name="LOG_LEVEL"?source="logging.level.root"/>
????<!--?<property?name="log.path"?value="log"?/>-->
????<property?name="log.maxHistory"?value="90"?/>
????<property?name="log.colorPattern"?value="%magenta(%d{yyyy-MM-dd?HH:mm:ss})?%highlight(%-5level)?%yellow(%thread)?%green(%logger)?%msg%n"/>
????<property?name="log.pattern"?value="%d{yyyy-MM-dd?HH:mm:ss}?%-5level?%thread?%logger?%msg%n"/>

????<!--輸出到控制臺(tái)-->
????<appender?name="console"?class="ch.qos.logback.core.ConsoleAppender">
????????<encoder>
????????????<pattern>${log.colorPattern}</pattern>
????????</encoder>
????</appender>

????<!--輸出到文件-->
????<appender?name="file_info"?class="ch.qos.logback.core.rolling.RollingFileAppender">
????????<rollingPolicy?class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
????????????<fileNamePattern>${LOG_PATH}/info/info.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
????????????<maxFileSize>3MB</maxFileSize>
????????????<maxHistory>30</maxHistory>
????????????<totalSizeCap>1GB</totalSizeCap>
????????</rollingPolicy>
????????<encoder>
????????????<pattern>${log.pattern}</pattern>
????????</encoder>
????????<filter?class="ch.qos.logback.classic.filter.LevelFilter">
????????????<level>INFO</level>
????????????<onMatch>ACCEPT</onMatch>
????????????<onMismatch>DENY</onMismatch>
????????</filter>
????</appender>

????<appender?name="file_error"?class="ch.qos.logback.core.rolling.RollingFileAppender">
????????<rollingPolicy?class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
????????????<fileNamePattern>${LOG_PATH}/error/error.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
????????????<maxFileSize>3MB</maxFileSize>
????????????<maxHistory>30</maxHistory>
????????????<totalSizeCap>1GB</totalSizeCap>
????????</rollingPolicy>
????????<encoder>
????????????<pattern>${log.pattern}</pattern>
????????</encoder>
????????<filter?class="ch.qos.logback.classic.filter.LevelFilter">
????????????<level>ERROR</level>
????????????<onMatch>ACCEPT</onMatch>
????????????<onMismatch>DENY</onMismatch>
????????</filter>
????</appender>

????<root?level="debug">
????????<appender-ref?ref="console"?/>
????</root>

????<root?level="info">
????????<appender-ref?ref="file_info"?/>
????????<appender-ref?ref="file_error"?/>
????</root>
</configuration>

代理已經(jīng)更新到 github倉(cāng)庫(kù)腳手架項(xiàng)目

關(guān)注公眾號(hào),「程序員三時(shí)」 持續(xù)輸出優(yōu)質(zhì)內(nèi)容 希望給你帶來(lái)一點(diǎn)啟發(fā)和幫助


SpringBoot定義優(yōu)雅全局統(tǒng)一Restful API 響應(yīng)框架五的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
吴江市| 静安区| 景德镇市| 永福县| 东乌珠穆沁旗| 福清市| 呼玛县| 双流县| 德兴市| 水富县| 垣曲县| 齐河县| 都兰县| 高邮市| 珠海市| 景洪市| 永和县| 全椒县| 筠连县| 兴海县| 中卫市| 阳高县| 界首市| 宾川县| 中超| 香河县| 固镇县| 慈利县| 新化县| 永城市| 临沂市| 烟台市| 东乡县| 瑞金市| 永定县| 庆元县| 阿拉善右旗| 镇江市| 林口县| 景宁| 渝中区|