第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何以編程方式從 log4j2 中刪除 ConsoleLogger?

如何以編程方式從 log4j2 中刪除 ConsoleLogger?

繁星淼淼 2023-03-09 10:53:57
我有一個全局記錄器配置,我想在我的整個項目中繼承它:<?xml version="1.0" encoding="UTF-8"?><Configuration>    <Appenders>        <Console name="CONSOLE" target="SYSTEM_OUT">            <PatternLayout pattern="%d %p %c{1.}: %m%n"/>            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />        </Console>        <RollingRandomAccessFile name="APP" fileName="/logs/application.logs" filePattern="/logs/application-%d{yyyy-MM-dd}.log.gz">            <PatternLayout pattern="%d %p %c{1.}: %m%n"/>            <Filters>                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>            </Filters>        </RollingRandomAccessFile>    </Appenders>    <Loggers>        <Root level="INFO">            <AppenderRef ref="APP" />            <AppenderRef ref="CONSOLE" />        </Root>    </Loggers></Configuration>問題:僅在生產(chǎn)中,我想刪除其中一個記錄器,appender CONSOLE。由于log4j2.xml配置文件不支持條件,我考慮過以編程方式刪除控制臺附加程序:final LoggerContext context = (LoggerContext) LogManager.getContext(false);final Configuration config = context.getConfiguration();System.out.println(config.getAppenders());問題:這只打印{DefaultConsole-2=DefaultConsole-2}問題:為什么我在這里看不到APPor CONSOLEappender?而且,我怎樣才能刪除控制臺附加程序呢?也許有可能以某種方式攔截log4j 上下文加載,以便我可以以編程方式跳過 CONSOLE appender?旁注:我正在記錄如下,在生產(chǎn)中應(yīng)該只轉(zhuǎn)到APP附加程序,而不是控制臺。private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());LOGGER.info("test");
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個贊

對于<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />在 Console Appender 中,您可以添加環(huán)境變量<ThresholdFilter level="${CONSOLE_LOG_LEVEL}" onMatch="ACCEPT" onMismatch="DENY" /> 或類似的東西并將此變量設(shè)置為OFF. 我也面臨這個問題,它對我有用。


這也適用于 vm args,如下所示:


<ThresholdFilter level="${sys:console.log.level}" ... />

啟動應(yīng)用程序時:java -jar -Dconsole.log.level=ERROR


旁注:以編程方式,刪除控制臺附加程序也可以:


public static void main(String[] args) {

    ctx = SpringApplication.run(MyApp.class, args);


    final LoggerContext context = (LoggerContext) LogManager.getContext(false);

    final Configuration config = context.getConfiguration();

    LoggerConfig loggerConfig = config.getLoggerConfig("loggerName");

    loggerConfig.removeAppender("CONSOLE");

    context.updateLoggers();

}

對于編程方法最重要的是SpringApplication必須先初始化上下文!否則配置的記錄器不可見!


查看完整回答
反對 回復(fù) 2023-03-09
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號