java - 如何使用 java 类而不是 xml 文件配置 logback 设置
问题描述
我是 Log 主题的新手,并尝试使用 logback 在我的应用程序中记录必要的信息。我在互联网上发现我可以使用这样的 xml 文件配置日志:
<springProfile name="production, staging">
<appender name="debugLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d %-5level %logger{36} - %msg %n</pattern>
</encoder>
<file>logs/service-debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>logs/service-debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>
</triggeringPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<appender name="errorLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d %-5level %logger{36} - %msg %n</pattern>
</encoder>
<file>logs/service-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>logs/service-info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<root level="DEBUG">
<appender-ref ref="debugLogAppender" />
<appender-ref ref="errorLogAppender" />
</root>
</springProfile>
我想在两个单独的文件中记录 DEBUG 级别和 ERROR 级别。我已经使用此配置进行了测试,并且成功了!
但我的问题是,我可以使用 Java 类而不是像这样的 xml 文件进行相同的配置。因为我的想法是我想从外部控制日志配置,也可以通过向我的应用程序发送 REST 服务来更改日志设置,例如:更改日志文件的名称,或更改日志模式......
那我怎么能用纯Java类呢?
非常感谢您的先进!
解决方案
我建议阅读有关 logback 的内容,如果我没记错的话,它可以让您通过更改 xml 文件(自动重新加载)或通过 web 挂钩来修改日志记录配置。
推荐阅读
- html - 文本输入上的圆角在移动视图中消失
- python - 在 NetworkX 中,如何获取包含节点数据的 DFS 树?
- c# - 如何在 Web 应用程序中显示不同的用户界面(不同的颜色、徽标和某些视图)
- scala - Scala groupBy 获取 RDD[String, vector]
- python - 如何明确告诉 Python 的 ldap3 模块到 TLS 1.2 版?
- python - 某些 Gurobi-python 函数无法正确识别
- excel - SAP .selectItem 在 VBA 中
- c++ - 运行长度编码程序c ++的问题
- python - AWS WSGIPath 引用了一个不存在的文件
- java - 如何从命令行运行从 Intellij 创建的 Java JAR