Java 我可以根据系统变量打开/关闭控制台日志记录吗?
我们维护一个应用程序范围的系统变量[debug=true | false],当系统变量debug为false时,我想在启动时禁用log4j中的所有控制台追加器 最好的方法就是对附加器进行程序扫描吗?或者有没有一种更优雅的方法,我可能不知道Java 我可以根据系统变量打开/关闭控制台日志记录吗?,java,log4j,Java,Log4j,我们维护一个应用程序范围的系统变量[debug=true | false],当系统变量debug为false时,我想在启动时禁用log4j中的所有控制台追加器 最好的方法就是对附加器进行程序扫描吗?或者有没有一种更优雅的方法,我可能不知道 如果这是正确的方法,那么任何关于扫描appender的初级读物都是受欢迎的。您是否考虑过为log4j设置.properties文件?您可以将log4j配置为向文件发送日志消息,关闭向控制台发送日志消息以获取信息、警告等。如果需要,您甚至可以按类进行配置。如果您
如果这是正确的方法,那么任何关于扫描appender的初级读物都是受欢迎的。您是否考虑过为log4j设置.properties文件?您可以将log4j配置为向文件发送日志消息,关闭向控制台发送日志消息以获取信息、警告等。如果需要,您甚至可以按类进行配置。如果您访问此站点并导航到“配置”部分,它将告诉您需要了解的内容
希望这能回答你的问题 我会为控制台appender编写一个特殊的过滤器。沿着
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.TTCCLayout">
<param name="ConversionPattern" value="%d...m%n"/>
</layout>
<filter class="OnDebugOnly"/>
</appender>
当然,这需要调整。例如调试的定义位置和访问方式。空档是为了防止有人添加另一个过滤器…
另外,布局正是我的,请在此处使用您喜欢的布局。
警告。我没有测试;-)
import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;
public class OnDebugOnly extends Filter {
static boolean debug;
@Override
public int decide(LoggingEvent event) {
return ( debug ? Filter.NEUTRAL : Filter.DENY ) ;
}
}