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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從從父類繼承 Logger 的抽象子類重定向 logger 消息

從從父類繼承 Logger 的抽象子類重定向 logger 消息

一只甜甜圈 2022-11-02 15:24:58
我正在開發(fā)一個(gè)在許多其他依賴項(xiàng)中使用 spring-beans 的 Java 項(xiàng)目(不是我的)。我的目標(biāo)是將所有記錄器消息從幾個(gè) spring-beans 類重定向到一個(gè)文件,以便它們?cè)诳刂婆_(tái)日志中不可見。我采用了程序化方法,因?yàn)樵谶@種情況下這更適合我,并且在谷歌搜索了一些 Log4j 解決方案之后,找到了一個(gè)(幾乎)對(duì)我有用的方法:public static void removeConsoleLogsByClassName(String fullClassName) {    LoggerContext ctx = (LoggerContext) LogManager.getContext(false);    Configuration config = ctx.getConfiguration();    PatternLayout layout = PatternLayout.newBuilder()            .withPattern("%d{yyyy-MM-dd HH:mm:ss} %c{2} | [%t] | %-5level: - %m%n")            .withConfiguration(config).build();    Appender appender = FileAppender.createAppender(             "some_location_goes_here/logfile.log",            "false",            "false", "fileAppender", "true", "false", "false", "8192", layout, null, "false", null, config);    appender.start();    config.addAppender(appender);    AppenderRef ref = AppenderRef.createAppenderRef("fileAppender", null, null);    AppenderRef[] refs = new AppenderRef[] { ref };    org.apache.logging.log4j.core.config.LoggerConfig loggerConfig = LoggerConfig.createLogger(false,            org.apache.logging.log4j.Level.TRACE,            fullClassName,            "true", refs, null, config, null);    loggerConfig.addAppender(appender, null, null);    if ("false".equals(TestInfo.getEnableLog())) {        loggerConfig.setLevel(org.apache.logging.log4j.Level.OFF);    }    config.addLogger(fullClassName, loggerConfig);    ctx.updateLoggers();}使用這種方法,我可以提供類名,并以編程方式將記錄器消息重定向到一個(gè)文件,這正是我所需要的。除了從某個(gè)父類繼承 LOGGER 對(duì)象的 spring-beans 中的(抽象)類之外,這有效。就我而言,我正在嘗試將日志消息從 AbstractBeanFactory 重定向到文件,但它們?nèi)匀伙@示在控制臺(tái)中。我想這是因?yàn)檫@個(gè)類從 DefaultSingletonBeanRegistry 繼承了 LOGGER 對(duì)象,但我不確定。類層次結(jié)構(gòu)如果有人對(duì)此有任何建議/解決方案,我將不勝感激。提前致謝。
查看完整描述

1 回答

?
莫回?zé)o

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

如果您查看層次結(jié)構(gòu)(SimpleAliasRegistry)中頂級(jí)類的源代碼,您將看到記錄器的初始化:

/** Logger available to subclasses. */
protected final Log logger = LogFactory.getLog(getClass());

getClass()返回運(yùn)行時(shí)具體類的類型。因此,當(dāng)您在日志中看到抽象類時(shí),這是寫入日志的位置,但真正為記錄器命名的類是某個(gè)子類。
我建議您嘗試將模式更改為所有日志,然后它將打印真實(shí)記錄器名稱的名稱(這是子類)


查看完整回答
反對(duì) 回復(fù) 2022-11-02
  • 1 回答
  • 0 關(guān)注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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