Java 在运行时更改日志级别而不重新启动服务器?
我使用logback作为SL4j接口的实现。这里是配置Java 在运行时更改日志级别而不重新启动服务器?,java,logging,logback,slf4j,Java,Logging,Logback,Slf4j,我使用logback作为SL4j接口的实现。这里是配置 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/prod.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/prod.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>logs/prod.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>700MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<logger name="com.ecom" additivity="false" level="ERROR">
<appender-ref ref="FILE" />
</logger>
日志/prod.log
日志/产品%d{yyyy-MM-dd}.%i.log
700MB
我希望在不重新启动服务器的情况下,通过在生产中更改配置或外部属性,将级别更改为Info或debug。可能吗
仅供参考,我将Weblogic用作应用服务器,并将Spring框架用于其他用途>有两种方法可以将记录器级别外部化
java-Dlogback.configurationFile=/pathToconfig.xml
。看
。然后设置系统级属性-Dlog.level=DEBUG
另见 您可以尝试包含另一个文件(在您的webapp之外),该文件覆盖logback.xml中的配置
<configuration scan="true" scanPeriod="30 seconds">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/prod.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>logs/prod.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>700MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<logger name="com.ecom" additivity="false" level="ERROR">
<appender-ref ref="FILE" />
</logger>
<include optional="true" file="/tmp/logbackDynamic.xml"/>
</configuration>
日志/prod.log
日志/产品%d{yyyy-MM-dd}.%i.log
700MB
如果您想要调试com.ecom.SomeClass的日志,那么您的/tmp/logbackDynamic.xml可能如下所示
<included>
<logger name="com.ecom.SomeClass" level="DEBUG">
<appender-ref ref="FILE" />
</logger>
</included>
现在,如果您在/tmp/logbackDynamic.xml中更改了配置,Logback将每30秒检查一次,然后重新加载它。如果要返回原始日志级别,只需删除标记之间的行,Logback将忽略调试级别。您甚至可以删除该文件,因为optional=“true”。但这是一种编程方法,我正在寻找配置/属性文件更改。在您提到的示例中,变量替换用于指定创建日志文件的位置。如何使用它在运行时更改日志级别?你的意思是我应该创建像
这样的外部属性文件,它将包含像LOG\u LEVEL=DEBUG
这样的属性,然后使用它
`变量替换也适用于“level”属性。我还修改了上面的答案。