国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

解鎖新技能《基于logback的純java版本SDK實(shí)現(xiàn)》

這篇具有很好參考價(jià)值的文章主要介紹了解鎖新技能《基于logback的純java版本SDK實(shí)現(xiàn)》。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

開源SDK:

<!--Java通用日志組件SDK-->
<dependency>
  <groupId>io.github.mingyang66</groupId>
  <artifactId>oceansky-logger</artifactId>
  <version>4.3.6</version>
</dependency>
<!-- Java基于logback的日志組件SDK -->
<dependency>
    <groupId>io.github.mingyang66</groupId>
    <artifactId>emily-spring-boot-logger</artifactId>
    <version>4.3.6</version>
</dependency>

在項(xiàng)目開發(fā)過程中通常會(huì)使用logback作為日志記錄的依賴工具,使用方式是引入logback相關(guān)jar包,然后配置logback.xml配置文件的方式來實(shí)現(xiàn);xml的配置方案如果是一個(gè)兩個(gè)項(xiàng)目還好,那如果是幾十個(gè)項(xiàng)目呢?每個(gè)項(xiàng)目都要寫一遍配置文件也是一鍵很繁瑣的事情,而且配置文件還容易出錯(cuò),那我們有沒有辦法將其改造成一個(gè)純java版本的SDK組件呢?如果我們需要用的時(shí)候只需要將其依賴引入項(xiàng)目中開箱即用是不是很方便。

一、開源SDK項(xiàng)目規(guī)劃
  • 新建oceansky-logger sdk,不依賴任何三方組件,不依賴任何web容器;
  • 新建emily-spring-boot-logger sdk,為基于springboot的項(xiàng)目提供開箱即用的starter;
二、oceansky-logger基礎(chǔ)庫SDK支持哪些功能
  • 支持基礎(chǔ)日志打??;
private static final Logger baseLogger = LoggerFactory.getLogger(LogbackController.class);
baseLogger.error("--------error");
baseLogger.info("--------info");
baseLogger.debug("--------debug");
baseLogger.warn("--------warn");
baseLogger.trace("--------trace");

這些日志會(huì)打印到指定的日志文件夾,分別存儲(chǔ)到error、warn、info、debug文件夾下;

  • 支持分組日志打??;
 private static final Logger logger = LoggerFactory.getGroupLogger(LogbackController.class, "group/test");
groupLogger.error("+++++++++++==ttttttttttttt");
groupLogger.debug("+++++++++++==ttttttttttttt");
groupLogger.info("+++++++++++==ttttttttttttt");
groupLogger.warn("+++++++++++==ttttttttttttt");
groupLogger.trace("+++++++++++==ttttttttttttt");

這些日志會(huì)分別打印到指定的分組文件夾group/test下面,分別存儲(chǔ)到error、warn、info、debug文件夾下;

  • 支持模塊日志打??;
 private static final Logger logger = LoggerFactory.getModuleLogger(LogbackController.class, "test1", "tt0");
logger..info("ni-----------------" + System.currentTimeMillis());

這些日志分別被記錄到指定的文件夾及指定的文件名中,同一個(gè)項(xiàng)目中可以指定N多個(gè)這樣的日志記錄模塊;

  • 支持是否將上述三種日志展示到控制臺(tái)上,控制統(tǒng)一通過LoggerContextInitializer.init方法實(shí)現(xiàn);
  • console控制臺(tái)支持基于ANSI編碼的顏色高亮展示;
  • 異常堆棧允許展示每一行末尾追加對(duì)應(yīng)所屬的jar包,如下示例的中括號(hào)內(nèi):
2023-07-19 14:16:38.405 ERROR default --- [tp-nio-8080-exec-1] c.e.i.t.controller.LogbackController:35   : -----error test---- 
java.lang.NullPointerException: Cannot invoke "String.length()" because "s" is null
	at com.emily.infrastructure.test.controller.LogbackController.debug(LogbackController.java:33) ~[classes/:na]
	at com.emily.infrastructure.test.controller.LogbackController$$FastClassBySpringCGLIB$$2de19373.invoke(<generated>) ~[classes/:na]
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.28.jar:5.3.28]
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.28.jar:5.3.28]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.28.jar:5.3.28]
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.28.jar:5.3.28]
	at com.alibaba.druid.support.spring.stat.DruidStatInterceptor.invoke(DruidStatInterceptor.java:70) ~[druid-1.2.18.jar:na]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.28.jar:5.3.28]
	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.28.jar:5.3.28]
  • 支持日志debug模式,展示內(nèi)部狀態(tài)信息及調(diào)試信息;

  • 支持基于ZIP、GZ的歸檔日志壓縮,壓縮率在80%以上;

  • 允許重復(fù)初始化logger,多次初始化以最后一次為準(zhǔn)(每次初始化都會(huì)重置原來的初始化內(nèi)容)

    LoggerContextInitializer.init(new LoggerProperties())
    
三、emis-spring-boot-logger基礎(chǔ)庫SDK支持哪些功能
  • 完全基于oceansky-logger sdk組件為springboot提供的starter組件;
  • 提供基于自動(dòng)化配置的開箱即用的組件模式,只需在pom.xml引入starter既可以按照ocean-logger中指定的使用方案使用;
  • 自動(dòng)化配置屬性控制root、group、module、appender、滾動(dòng)策略等,具體配置如下:
#日志組件
#啟動(dòng)日志訪問組件,默認(rèn):true
spring.emily.logger.enabled=true
#是否開啟debug模式,默認(rèn):false
spring.emily.logger.debug=true
#發(fā)生異常打印異常堆棧時(shí)是否將包信息追加到每行末尾,默認(rèn):true
spring.emily.logger.packaging-data=true
#日志文件存放路徑,默認(rèn)是:./logs
spring.emily.logger.appender.path=./logs
#如果是 true,日志被追加到文件結(jié)尾,如果是 false,清空現(xiàn)存文件,默認(rèn)是true
spring.emily.logger.appender.append=true
#如果是 true,日志會(huì)被安全的寫入文件,即使其他的FileAppender也在向此文件做寫入操作,效率低,默認(rèn)是 false|Support multiple-JVM writing to the same log file
spring.emily.logger.appender.prudent=false
#設(shè)置是否將輸出流刷新,確保日志信息不丟失,默認(rèn):true
spring.emily.logger.appender.immediate-flush=true
#是否開啟基于文件大小和時(shí)間的SizeAndTimeBasedRollingPolicy歸檔策略
#歸檔策略(SIZE_AND_TIME_BASED、TIME_BASE),默認(rèn):TIME_BASE
spring.emily.logger.appender.rolling-policy.type=TIME_BASE
#設(shè)置要保留的最大存檔文件數(shù)量,以異步方式刪除舊文件,默認(rèn) 7
spring.emily.logger.appender.rolling-policy.max-history=2
#最大日志文件大小 KB、MB、GB,默認(rèn):500MB
spring.emily.logger.appender.rolling-policy.max-file-size=10KB
#控制所有歸檔文件總大小 KB、MB、GB,默認(rèn):5GB
spring.emily.logger.appender.rolling-policy.total-size-cap=5GB
#設(shè)置重啟服務(wù)后是否清除歷史日志文件,默認(rèn):false
spring.emily.logger.appender.rolling-policy.clean-history-on-start=true
#壓縮模式(NONE、GZ、ZIP),默認(rèn):ZIP
spring.emily.logger.appender.rolling-policy.compression-mode=ZIP
#是否開啟異步記錄Appender,默認(rèn):false
spring.emily.logger.appender.async.enabled=false
#隊(duì)列的最大容量,默認(rèn)為 256
spring.emily.logger.appender.async.queue-size=256
#默認(rèn),當(dāng)隊(duì)列還剩余 20% 的容量時(shí),會(huì)丟棄級(jí)別為 TRACE, DEBUG 與 INFO 的日志,僅僅只保留 WARN 與 ERROR 級(jí)別的日志。想要保留所有的事件,可以設(shè)置為 0
spring.emily.logger.appender.async.discarding-threshold=0
# 根據(jù)所引用 appender 隊(duì)列的深度以及延遲, AsyncAppender 可能會(huì)耗費(fèi)長(zhǎng)時(shí)間去刷新隊(duì)列。
# 當(dāng) LoggerContext 被停止時(shí), AsyncAppender stop 方法會(huì)等待工作線程指定的時(shí)間來完成。
# 使用 maxFlushTime 來指定最大的刷新時(shí)間,單位為毫秒。在指定時(shí)間內(nèi)沒有被處理完的事件將會(huì)被丟棄。這個(gè)屬性的值的含義與 Thread.join(long)) 相同
# 默認(rèn)是 1000毫秒
spring.emily.logger.appender.async.max-flush-time=1000
# 在隊(duì)列滿的時(shí)候 appender 會(huì)阻塞而不是丟棄信息。設(shè)置為 true,appender 不會(huì)阻塞你的應(yīng)用而會(huì)將消息丟棄,默認(rèn)為 false
spring.emily.logger.appender.async.never-block=false
#是否將日志信息輸出到控制臺(tái),默認(rèn):true
spring.emily.logger.root.console=false
#基礎(chǔ)日志文件路徑,默認(rèn):""
spring.emily.logger.root.file-path=base
#日志級(jí)別,即該等級(jí)之上才會(huì)輸出,ERROR > WARN > INFO > DEBUG > TRACE >ALL, 默認(rèn):INFO
spring.emily.logger.root.level=info
#記入文件日志格式-不帶顏色
spring.emily.logger.root.pattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %cn --- [%18.18thread] %-36.36logger{36}:%-4.4line : %msg %n
#控制臺(tái)輸出格式-帶顏色,默認(rèn):[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] [%-36.36logger{36}:%-4.4line] : %msg%n
spring.emily.logger.root.console-pattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %cn --- [%18.18thread] %cyan(%-36.36logger{36}:%-4.4line) : %msg %n
#是否將模塊日志輸出到控制臺(tái),默認(rèn):false
spring.emily.logger.group.console=true
#日志級(jí)別,即該等級(jí)之上才會(huì)輸出,ERROR > WARN > INFO > DEBUG > TRACE >ALL, 默認(rèn):INFO
spring.emily.logger.group.level=info
#模塊日志輸出格式,默認(rèn):%msg%n
spring.emily.logger.group.pattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %cn --- [%18.18thread] %-36.36logger{36}:%-4.4line : %msg %n
#是否將模塊日志輸出到控制臺(tái),默認(rèn):false
spring.emily.logger.module.console=true
#日志級(jí)別,即該等級(jí)之上才會(huì)輸出,ERROR > WARN > INFO > DEBUG > TRACE >ALL, 默認(rèn):DEBUG
spring.emily.logger.module.level=info
#模塊日志輸出格式,默認(rèn):%msg%n
spring.emily.logger.module.pattern=%msg%n

四、組件使用方法
  • oceansky-logger組件SDK使用方法,調(diào)用初始化方法后即可開始日志記錄的愉快旅程
LoggerProperties properties = new LoggerProperties();
LoggerContextInitializer.init(properties);
  • emily-spring-boot-logger是一個(gè)基于springboot自動(dòng)化配置,開箱即用的組件,只需要引入組件既可以使用;

如果對(duì)源碼感興趣,可以查看GitHub源碼:https://github.com/mingyang66/spring-parent文章來源地址http://www.zghlxwxcb.cn/news/detail-603987.html

到了這里,關(guān)于解鎖新技能《基于logback的純java版本SDK實(shí)現(xiàn)》的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 解鎖新技能《spring如何將屬性配置文件中的屬性綁定到實(shí)體類中》

    在springboot中將配置文件中的屬性綁定到指定的實(shí)體類上可以通過自動(dòng)化配置的方式實(shí)現(xiàn),也可以通過手動(dòng)方式從Environment環(huán)境變量中取出再賦值給實(shí)體類;但是在有些場(chǎng)景下自動(dòng)化配置這種方案是行不通的,例如:ApplicationListener、ApplicationContextInitializer進(jìn)行初始化調(diào)用時(shí)屬性

    2024年02月16日
    瀏覽(56)
  • 大模型筆記之-低成本部署CharGLM3|chatglm.cpp基于ggml 的純 C++ 實(shí)現(xiàn)

    大模型筆記之-低成本部署CharGLM3|chatglm.cpp基于ggml 的純 C++ 實(shí)現(xiàn)

    之前兩篇文章已經(jīng)分別在云上和本地搭建了chatGLM3的API接口 和綜合web_demo.py 本篇文章記錄如何僅使用CPU和內(nèi)存在沒有GPU(cuda)的情況下推理chatGLM3 ps:表示原始模型位置,如果本地沒有模型會(huì)從hf聯(lián)網(wǎng)下載 位于convert.py的512行修改默認(rèn)模型位置 此外還有 位于convert.py的529行修改

    2024年01月19日
    瀏覽(41)
  • 解鎖新技能《Git本地訪問GitHub出現(xiàn)WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!警告》

    今天本地git訪問github倉庫的時(shí)候出現(xiàn)如下異常: 問題原因是SSH會(huì)把每個(gè)曾經(jīng)訪問過的Git服務(wù)器的公鑰記錄在/Users/xx/.ssh/known_hosts文件中,當(dāng)下次訪問時(shí)會(huì)核對(duì)公鑰,如果和上次的記錄不同,SSH就會(huì)發(fā)出警告。 解決方法:直接刪除/Users/xx/.ssh/known_hosts文件。 GitHub地址:https://

    2024年02月14日
    瀏覽(26)
  • 訊飛離線語音合成新版(Aikit)-android sdk合成 demo(Java版本)

    前言:科大訊飛的新版離線語音合成,由于官網(wǎng)demo是kt語言開發(fā)的,咱也看不懂kt,搜遍了全網(wǎng)也沒看到一個(gè)java版的新版離線語音demo,現(xiàn)記錄下,留給有緣人參考?。。。?!畢竟咱在這上面遇到了不少的坑。如果能留言指正,那就更好了。 ?官網(wǎng)注冊(cè)賬號(hào)---》實(shí)名認(rèn)證---》

    2024年02月11日
    瀏覽(22)
  • TransnormerLLM 中 FlashLinearAttention 的純pytorch實(shí)現(xiàn)

    Github 倉庫:https://github.com/One-sixth/flash-linear-attention-pytorch 純 Pytorch 實(shí)現(xiàn) TransnormerLLM 中快速線性注意力算子。 用于學(xué)習(xí)目的。 如果你希望用于訓(xùn)練模型,你可能要修改為 CUDA 或 Triton 的實(shí)現(xiàn),不然會(huì)很慢。 這個(gè)算子有精度問題,誤差較大,是正常的。 這是因?yàn)樽⒁饬仃嚊]

    2024年02月14日
    瀏覽(15)
  • 基于 Web SDK 實(shí)現(xiàn)視頻通話場(chǎng)景 | 聲網(wǎng) SDK 教程

    基于 Web SDK 實(shí)現(xiàn)視頻通話場(chǎng)景 | 聲網(wǎng) SDK 教程

    聲網(wǎng)視頻 SDK 被廣泛應(yīng)用于多種實(shí)時(shí)互動(dòng)場(chǎng)景中,例如視頻會(huì)議、視頻通話、音視頻社交、在線教育等。為了讓剛剛接觸聲網(wǎng) SDK 的開發(fā)者,可以更順暢地實(shí)現(xiàn)基礎(chǔ)的視頻通話功能,我們基于聲網(wǎng) Web SDK 4.x 版本梳理了本篇教程。 在本文末,會(huì)提供相應(yīng) Demo 、文檔地址供大家參

    2023年04月09日
    瀏覽(24)
  • Idea新建spring Initializr項(xiàng)目時(shí)選擇Project SDK為1.8,選擇java版本只有是17和21,出現(xiàn)報(bào)錯(cuò)信息

    Idea新建spring Initializr項(xiàng)目時(shí)選擇Project SDK為1.8,選擇java版本只有是17和21,出現(xiàn)報(bào)錯(cuò)信息

    1.項(xiàng)目構(gòu)建圖展示: 2.報(bào)錯(cuò)圖展示: 3.原因說的很清楚了,是java版本和jdk版本不符合導(dǎo)致的 4.解決方案 改為阿里云的服務(wù)器路徑: https://start.aliyun.com 5.測(cè)試 這時(shí)候就有了java8的版本了

    2024年01月17日
    瀏覽(25)
  • 基于??低暤腟DK實(shí)現(xiàn)二次開發(fā)

    基于海康威視的SDK實(shí)現(xiàn)二次開發(fā)

    因?yàn)榫W(wǎng)上關(guān)于??低昐DK這塊的開發(fā)資源比較少,自己也是一步一步摸索過來,知道那種痛苦, 所以把自己的一些過來人的經(jīng)驗(yàn)寫出來供大家學(xué)習(xí)參考 進(jìn)入海康威視官網(wǎng) 下載你所需要的SDK開發(fā)包(這里我就用windows來作為案列) 下載完SDK解壓 里面有開發(fā)文檔和SDK的動(dòng)態(tài)庫文

    2024年04月10日
    瀏覽(17)
  • 【Rust日?qǐng)?bào)】2023-03-14 Rust實(shí)現(xiàn)的純 CPU 運(yùn)算的 LLaMA 模型

    【Rust日?qǐng)?bào)】2023-03-14 Rust實(shí)現(xiàn)的純 CPU 運(yùn)算的 LLaMA 模型

    Rust實(shí)現(xiàn)的純 CPU 運(yùn)算的 LLaMA 模型 我試圖讓 LLaMA 語言模型在純 CPU實(shí)現(xiàn)上工作,靈感來自于這里的一個(gè)很棒的CPU實(shí)現(xiàn):https://github.com/ggerganov/ggml,它可以運(yùn)行GPT-J 6B模型。 在我的蹩腳的 OpenCL 的代碼下,我的GTX 3090上可以實(shí)現(xiàn)每個(gè) Token 耗時(shí) 270毫秒。在Ryzen 3950X上使用純 CPU 和

    2024年02月09日
    瀏覽(35)
  • 基于??礢DK實(shí)現(xiàn)Python調(diào)用??低暰W(wǎng)絡(luò)攝像頭

    基于??礢DK實(shí)現(xiàn)Python調(diào)用??低暰W(wǎng)絡(luò)攝像頭

    本文參考博客,寫得很好: Python調(diào)用??低暰W(wǎng)絡(luò)相機(jī)之——python調(diào)用??低旵++的SDK Python調(diào)用??低暰W(wǎng)絡(luò)相機(jī)C++的SDK 寫本文的目的,也是快速?gòu)?fù)盤,所以沒有很詳細(xì) 保存視頻流到本地可參考下一篇:基于海康SDK實(shí)現(xiàn)Python保存??低暰W(wǎng)絡(luò)攝像頭拍攝的視頻 Windows11 Vis

    2024年02月02日
    瀏覽(54)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包