在工作中,我主動(dòng)從頭開始創(chuàng)建一個(gè)日志庫(kù),以便在內(nèi)部服務(wù)和項(xiàng)目中使用。迄今為止,我已經(jīng)使用自定義類創(chuàng)建了概念證明,該自定義類extends PatternLayout混淆了輸出日志條目中的某些字段?,F(xiàn)在的主要任務(wù)是斷言性能是可以接受的,并且我的解決方案可以處理數(shù)百萬(wàn)個(gè)日志條目而不會(huì)丟失消息。我決定為我的自定義 logback、默認(rèn) logback 布局和 Log4j2 編寫性能測(cè)試,以便比較輸出結(jié)果。我已經(jīng)使用jmh.<?xml version="1.0" encoding="UTF-8"?><configuration> <appender name="FILE_APPLY_RULES" class="ch.qos.logback.core.FileAppender"> <file>logs\log.txt</file> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="com.ingenico.epayments.logging.rule.LoggingRulesApplicator"> <pattern>%msg%n</pattern> <applyRules>true</applyRules> <loggingRules>src/test/resources/logging-rules.json</loggingRules> </layout> </encoder> </appender> <appender name="ASYNC_FILE_APPLY_RULES" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <appender-ref ref="FILE_APPLY_RULES" /> <queueSize>256</queueSize> <includeCallerData>false</includeCallerData> <neverBlock>true</neverBlock> </appender> <root level="INFO"> <appender-ref ref="ASYNC_FILE_APPLY_RULES" /> </root></configuration>@Slf4jpublic class LogbackTest { @Test public void launchBenchmark() throws RunnerException { Options opt = new OptionsBuilder() .include(this.getClass().getName() + ".*") .timeUnit(TimeUnit.MICROSECONDS) .warmupTime(TimeValue.seconds(1)) .warmupIterations(2) .measurementTime(TimeValue.seconds(1)) .measurementIterations(2) .threads(2) .forks(1) .shouldFailOnError(true) .shouldDoGC(true) .addProfiler(StackProfiler.class) .addProfiler(HotspotRuntimeProfiler.class) .build(); new Runner(opt).run(); }測(cè)試已運(yùn)行,在輸出中,我看到很多結(jié)果數(shù)字,但我不知道應(yīng)該比較哪些值,以及如何斷言如果我有良好的性能結(jié)果,這不是因?yàn)橄⒁驯粊G棄?您能給我一些如何準(zhǔn)備有效的性能測(cè)試的提示嗎?
1 回答

小唯快跑啊
TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
您有一個(gè)異步AsyncAppender
附加程序,它可能會(huì)刪除隊(duì)列中的消息。同時(shí),JMH 基準(zhǔn)測(cè)試期望@Benchmark
帶注釋的方法中的代碼同步執(zhí)行,以計(jì)算需要多長(zhǎng)時(shí)間。這行不通。
在我看來(lái),您試圖一次測(cè)試太多的東西,例如整個(gè) Logback 堆棧。如果您開發(fā)了自定義布局類,LoggingRulesApplicator
請(qǐng)先為該類編寫 JMH 基準(zhǔn)測(cè)試。
查看現(xiàn)有的 log4j2 JMH 基準(zhǔn)測(cè)試。通過(guò)使用 NOOP 附加程序可以簡(jiǎn)化設(shè)置,您可能也應(yīng)該擁有它。
添加回答
舉報(bào)
0/150
提交
取消