1

我在 logback 中使用 SMTPAppender,配置如下:

<appender name="ALARM-APPENDER" class="ch.qos.logback.classic.net.SMTPAppender">
  ...
  <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
    <maxNumberOfBuffers>256</maxNumberOfBuffers>
  </cyclicBufferTracker>
  ...
</appender>  

但是我在运行时遇到了这个错误:

10:00:48,171 |-ch.qos.logback.core.joran.spi.Interpreter@82:24 中的错误 - [maxNumberOfBuffers] 没有适用的操作,当前 ElementPath 是 [[configuration][appender][cyclicBufferTracker][maxNumberOfBuffers ]]

所以我重新检查了官方手册:
http
: //logback.qos.ch/manual/appenders.html#bufferManagement 它没有告诉 maxNumberOfBuffers 应该配置到哪里。

幸运的是,我在官方文档中找到了一个配置示例: http://logback.qos.ch/recipes/emailPerTransaction.html

<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
    <maxNumberOfBuffers>512</maxNumberOfBuffers>
</cyclicBufferTracker>

长得一样。。。

然后我检查了 Class CyclicBufferTracker 的最新 java-doc:
http
://logback.qos.ch/apidocs/ch/qos/logback/core/spi/CyclicBufferTracker.html 此处或其父类中没有“setMaxNumberOfBuffers”方法。

作为最后的手段,我检查了 github 中的源代码更改历史记录:
https ://github.com/qos-ch/logback/blob/a052f15d09636698c96fcdb753da3270f5c01b11/logback-core/src/main/java/ch/qos/logback/core/ spi/CyclicBufferTracker.java
在原版中,当它还是一个接口的时候,里面有“setMaxNumberOfBuffers”和“setBufferSize”两个方法。

https://github.com/qos-ch/logback/commit/773193a09922ab2a1dd70e4978be8cdf4e050f6e
2013 年 4 月 25 日,删除了方法“setMaxNumberOfBuffers”。

现在有一个问题:我应该在哪里配置“setMaxNumberOfBuffers”?
(“setMaxNumberOfBuffers”与“setBufferSize”的含义完全不同)

它甚至无法在 logback 的存储库中找到“maxNumberOfBuffers”字符串:
https ://github.com/qos-ch/logback/search?q=maxNumberOfBuffers

顺便说一句,我正在使用最新版本的 logback(1.1.2)。
多谢你们!

4

1 回答 1

0

确保使用最新版本。遇到了同样的问题,但是 logback 版本 1.0.9 的bufferSize属性。经过一些研究发现了这个 错误报告
更新到最新版本后问题消失了。

于 2014-08-14T16:03:31.557 回答