logback - SLF4J LogBack - 多个记录器和附加器
问题描述
我需要有关我所拥有的日志记录要求的指导。我的应用程序有两个服务 - 上传和下载。我需要为两者维护单独的日志 - 到目前为止,我已经在 logback.xml 中完成了以下操作
<appender name="DownloadAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>download.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>download.log_%d{yyyy-MM-dd}_%i.zip</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
<expression>logger.equals("DownloadLogger")</expression>
</evaluator>
<OnMismatch>DENY</OnMismatch>
<OnMatch>ACCEPT</OnMatch>
</filter>
</appender>
<appender name="UploadAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>upload.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>upload.log_%d{yyyy-MM-dd}_%i.zip</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
<expression>logger.equals(UploadLogger")</expression>
</evaluator>
<OnMismatch>DENY</OnMismatch>
<OnMatch>ACCEPT</OnMatch>
</filter>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="DownloadLogger" level="DEBUG" additivity="true">
<appender-ref ref="DownloadAppender" />
</logger>
<logger name="UploadLogger" level="DEBUG" additivity="true">
<appender-ref ref="UploadAppender" />
</logger>
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
</root>
应用程序中定义的记录器的使用由相应的服务类使用。即上传服务类获取记录器
LoggerFactory.getLogger("UploadLogger")
对于 DownloadLogger,反之亦然。
运行该服务后,我注意到仅创建并填写了 upload.log。创建了 download.log,但其中没有记录任何内容。
我怀疑过滤器的使用不正确,但我找不到任何解决方案,以便可以正确维护两个日志文件。
有人可以帮助我如何更正配置吗?
解决方案
上面的配置适合这个目的。问题在于 logback.xml 作为命令行参数提供的方式。
为 logback.xml 提供 -Dlogback.configurationFile 后问题得到解决
推荐阅读
- python - python套接字编程:尝试连接服务器时出错
- javascript - 如何检索与 JavaScript 中条件匹配的所有索引?
- javascript - 自定义 PayPal 捐赠按钮以将信息传递到 PayPal 页面
- node.js - 如何处理 React Spa 上的刷新令牌?
- python-3.x - 在python中动态创建数据框
- .net - VSTO Outlook 插件:MeasureString 计算错误的宽度
- django - 在我的 Django 应用程序中设置搜索功能
- python - 如何仅读取 msg 文件的第一个电子邮件正文,不包括附加到该 msg 文件的邮件
- c++ - 使用 fltk 时文本未出现在编译窗口中
- typescript - ngrx 效果 - 结合两个 API