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

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

使用帶有自己的 PrintStream 的 ConsoleHandler 抑制 System.err

使用帶有自己的 PrintStream 的 ConsoleHandler 抑制 System.err

慕工程0101907 2021-06-21 17:09:47
我想在JavaConsoleHandler使用System.out的,而不是err,所以我實現(xiàn)我自己的處理程序調(diào)用protected void setOutputStream(OutputStream)父StreamHandler類:public class ConsoleHandler extends java.util.logging.ConsoleHandler {    public ConsoleHandler() {        setOutputStream(System.out); // or System.err        setLevel(Level.ALL);    }}我從根記錄器中刪除默認(rèn)控制臺記錄器并將我自己的記錄器添加到根記錄器中:Logger l = Logger.getLogger("");for (Handler h : l.getHandlers())    l.removeHandler(h);l.addHandler(new ConsoleHandler());System.out.println("OUT");System.err.println("ERR");問題:始終打印“OUT”,但從不打印“ERR”,這與我在 ConsoleHandler 構(gòu)造函數(shù)中設(shè)置的輸出流無關(guān)。
查看完整描述

1 回答

?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗 獲得超3個贊

堆棧跟蹤(打印到 System.err)不再打印,如果沒有我的更改,它會像往常一樣打印


這是因為setOutputStream 關(guān)閉了先前分配的System.err流。這是JDK-4827381下的一個已知問題:調(diào)用 ConsoleHandler.setOutputStream(...) 關(guān)閉 System.err。該錯誤報告應(yīng)該發(fā)生的是StreamHandler.setOutputStream應(yīng)該調(diào)用Handler.close而不是flushAndClose().


您需要System.err使用不允許關(guān)閉流的代理來包裝現(xiàn)有流。或者只是擴(kuò)展StreamHandler并使用帶有 OutputStream 的構(gòu)造函數(shù)。


public class OutConsoleHandler extends StreamHandler {


   public OutConsoleHandler() {

        super(System.out, new SimpleFormatter());

        //TODO: Read level,filter,encoding from LogManager.

   }


    @Override

    public void publish(LogRecord record) {

        super.publish(record);

        super.flush();

    }


    @Override

    public void close() {

        super.flush();

    }

}


查看完整回答
反對 回復(fù) 2021-06-23
  • 1 回答
  • 0 關(guān)注
  • 176 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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