亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? asyncappendertestcase.java

?? apache的log4j源碼
?? JAVA
字號:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at *  *      http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.log4j;import junit.framework.TestCase;import junit.framework.TestSuite;import junit.framework.Test;import java.util.Vector;import org.apache.log4j.*;import org.apache.log4j.spi.LoggingEvent;import org.apache.log4j.varia.NullAppender;/**   A superficial but general test of log4j. */public class AsyncAppenderTestCase extends TestCase {  public AsyncAppenderTestCase(String name) {    super(name);  }  public void setUp() {  }  public void tearDown() {    LogManager.shutdown();  }  // this test checks whether it is possible to write to a closed AsyncAppender  public void closeTest() throws Exception {        Logger root = Logger.getRootLogger();    Layout layout = new SimpleLayout();    VectorAppender vectorAppender = new VectorAppender();    AsyncAppender asyncAppender = new AsyncAppender();    asyncAppender.setName("async-CloseTest");    asyncAppender.addAppender(vectorAppender);    root.addAppender(asyncAppender);     root.debug("m1");    asyncAppender.close();    root.debug("m2");        Vector v = vectorAppender.getVector();    assertEquals(v.size(), 1);  }  // this test checks whether appenders embedded within an AsyncAppender are also   // closed   public void test2() {    Logger root = Logger.getRootLogger();    Layout layout = new SimpleLayout();    VectorAppender vectorAppender = new VectorAppender();    AsyncAppender asyncAppender = new AsyncAppender();    asyncAppender.setName("async-test2");    asyncAppender.addAppender(vectorAppender);    root.addAppender(asyncAppender);     root.debug("m1");    asyncAppender.close();    root.debug("m2");        Vector v = vectorAppender.getVector();    assertEquals(v.size(), 1);    assertTrue(vectorAppender.isClosed());  }  // this test checks whether appenders embedded within an AsyncAppender are also   // closed   public void test3() {    int LEN = 200;    Logger root = Logger.getRootLogger();    Layout layout = new SimpleLayout();    VectorAppender vectorAppender = new VectorAppender();    AsyncAppender asyncAppender = new AsyncAppender();    asyncAppender.setName("async-test3");    asyncAppender.addAppender(vectorAppender);    root.addAppender(asyncAppender);     for(int i = 0; i < LEN; i++) {      root.debug("message"+i);    }        System.out.println("Done loop.");    System.out.flush();    asyncAppender.close();    root.debug("m2");        Vector v = vectorAppender.getVector();    assertEquals(v.size(), LEN);    assertTrue(vectorAppender.isClosed());  }    private static class NullPointerAppender extends AppenderSkeleton {          public NullPointerAppender() {          }          /**             This method is called by the {@link org.apache.log4j.AppenderSkeleton#doAppend}             method.          */          public void append(org.apache.log4j.spi.LoggingEvent event) {              throw new NullPointerException();          }          public void close() {          }          public boolean requiresLayout() {            return false;          }    }    /**     * Tests that a bad appender will switch async back to sync.     * See bug 23021     * @since 1.2.12     * @throws Exception thrown if Thread.sleep is interrupted     */    public void testBadAppender() throws Exception {        Appender nullPointerAppender = new NullPointerAppender();        AsyncAppender asyncAppender = new AsyncAppender();        asyncAppender.addAppender(nullPointerAppender);        asyncAppender.setBufferSize(5);        asyncAppender.activateOptions();        Logger root = Logger.getRootLogger();        root.addAppender(nullPointerAppender);        try {           root.info("Message");           Thread.sleep(10);           root.info("Message");           fail("Should have thrown exception");        } catch(NullPointerException ex) {        }    }    /**     * Tests location processing when buffer is full and locationInfo=true.     * See bug 41186.     */    public void testLocationInfoTrue() {        BlockableVectorAppender blockableAppender = new BlockableVectorAppender();        AsyncAppender async = new AsyncAppender();        async.addAppender(blockableAppender);        async.setBufferSize(5);        async.setLocationInfo(true);        async.setBlocking(false);        async.activateOptions();        Logger rootLogger = Logger.getRootLogger();        rootLogger.addAppender(async);        Greeter greeter = new Greeter(rootLogger, 100);        synchronized(blockableAppender.getMonitor()) {            greeter.run();            rootLogger.error("That's all folks.");        }        async.close();        Vector events = blockableAppender.getVector();        LoggingEvent initialEvent = (LoggingEvent) events.get(0);        LoggingEvent discardEvent = (LoggingEvent) events.get(events.size() - 1);        PatternLayout layout = new PatternLayout();        layout.setConversionPattern("%C:%L %m%n");        layout.activateOptions();        String initialStr = layout.format(initialEvent);        assertEquals(AsyncAppenderTestCase.class.getName(),                initialStr.substring(0, AsyncAppenderTestCase.class.getName().length()));        String discardStr = layout.format(discardEvent);        assertEquals("?:? ", discardStr.substring(0, 4));    }    /**     * Tests location processing when buffer is full and locationInfo=false.     * See bug 41186.     */    public void testLocationInfoFalse() {        BlockableVectorAppender blockableAppender = new BlockableVectorAppender();        AsyncAppender async = new AsyncAppender();        async.addAppender(blockableAppender);        async.setBufferSize(5);        async.setLocationInfo(false);        async.setBlocking(false);        async.activateOptions();        Logger rootLogger = Logger.getRootLogger();        rootLogger.addAppender(async);        Greeter greeter = new Greeter(rootLogger, 100);        synchronized(blockableAppender.getMonitor()) {            greeter.run();            rootLogger.error("That's all folks.");        }        async.close();        Vector events = blockableAppender.getVector();        LoggingEvent initialEvent = (LoggingEvent) events.get(0);        LoggingEvent discardEvent = (LoggingEvent) events.get(events.size() - 1);        PatternLayout layout = new PatternLayout();        layout.setConversionPattern("%C:%L %m%n");        layout.activateOptions();        String initialStr = layout.format(initialEvent);        assertEquals("?:? ", initialStr.substring(0, 4));        String discardStr = layout.format(discardEvent);        assertEquals("?:? ", discardStr.substring(0, 4));    }    /**     *  Logging request runnable.     */    private static final class Greeter implements Runnable {      /**       * Logger.       */      private final Logger logger;      /**       * Repetitions.       */      private final int repetitions;      /**       * Create new instance.       * @param logger logger, may not be null.       * @param repetitions repetitions.       */      public Greeter(final Logger logger, final int repetitions) {        if (logger == null) {          throw new IllegalArgumentException("logger");        }        this.logger = logger;        this.repetitions = repetitions;      }      /**       * {@inheritDoc}       */      public void run() {        try {          for (int i = 0; i < repetitions; i++) {            logger.info("Hello, World");            Thread.sleep(1);          }        } catch (InterruptedException ex) {          Thread.currentThread().interrupt();        }      }    }    /**     * Vector appender that can be explicitly blocked.     */    private static final class BlockableVectorAppender extends VectorAppender {      /**       * Monitor object used to block appender.       */      private final Object monitor = new Object();      /**       * Thread of last call to append.       */      private Thread dispatcher;      /**       * Create new instance.       */      public BlockableVectorAppender() {        super();      }      /**       * {@inheritDoc}       */      public void append(final LoggingEvent event) {        synchronized (monitor) {          dispatcher = Thread.currentThread();          super.append(event);            //            //   if fatal, echo messages for testLoggingInDispatcher            //            if (event.getLevel() == Level.FATAL) {                Logger logger = Logger.getLogger(event.getLoggerName());                logger.error(event.getMessage().toString());                logger.warn(event.getMessage().toString());                logger.info(event.getMessage().toString());                logger.debug(event.getMessage().toString());            }        }      }      /**       * Get monitor object.       * @return monitor.       */      public Object getMonitor() {        return monitor;      }      /**       * Get thread of previous call to append.       * @return thread, may be null.       */      public Thread getDispatcher() {        synchronized (monitor) {          return dispatcher;        }      }    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本韩国一区| 99久久精品国产观看| 91传媒视频在线播放| 国产精品天干天干在线综合| 国产一区二区三区香蕉| 欧美精品一级二级| 欧美色中文字幕| 国产精品九色蝌蚪自拍| 成人精品在线视频观看| 久久蜜桃一区二区| 国产精品一区二区x88av| 久久综合精品国产一区二区三区| 美女视频黄免费的久久| 在线播放国产精品二区一二区四区| 伊人开心综合网| 成人av资源网站| 国产精品久久777777| 99re6这里只有精品视频在线观看| 国产欧美一区二区精品久导航 | 亚洲综合免费观看高清完整版在线 | 精品1区2区3区| 日韩一区精品视频| 欧美一区二区三区视频免费播放 | 国产精品美女久久久久久久久| 成人免费视频视频| 天堂一区二区在线| 日韩欧美成人一区| 狠狠色综合色综合网络| 中文字幕欧美国产| 欧美日韩免费在线视频| 美女视频网站黄色亚洲| 国产精品久久夜| 欧美日韩国产大片| 成人av网站在线观看免费| 另类小说视频一区二区| 欧美激情在线一区二区三区| 欧美色图在线观看| 不卡一卡二卡三乱码免费网站| 午夜电影一区二区三区| 中文字幕在线播放不卡一区| 欧美色涩在线第一页| 成人av资源在线观看| 日本va欧美va瓶| 一区二区视频在线看| 国产欧美日韩另类一区| 欧美日韩精品高清| 91免费在线视频观看| 岛国精品在线播放| 久久99热国产| 美女脱光内衣内裤视频久久影院| 午夜日韩在线电影| 亚洲综合丝袜美腿| 亚洲丝袜精品丝袜在线| 国产精品不卡在线观看| 中文成人综合网| 欧美岛国在线观看| 日韩欧美电影在线| 亚洲不卡在线观看| 亚洲三级视频在线观看| 亚洲免费av高清| 亚洲欧美日本韩国| 一区二区三区四区在线免费观看 | 3atv在线一区二区三区| 欧美精品一卡二卡| 91精品国产一区二区三区蜜臀| 日韩欧美高清一区| 中文一区一区三区高中清不卡| 中文字幕一区二区三区蜜月| 一区二区三区四区亚洲| 日韩专区中文字幕一区二区| 国内成人自拍视频| 91丨porny丨在线| 欧美高清一级片在线| 久久综合色8888| 国产精品久久99| 久久天天做天天爱综合色| 国产精品热久久久久夜色精品三区 | 国产精品久久久久久久久久免费看 | 成人综合婷婷国产精品久久蜜臀| 成人99免费视频| 精品免费99久久| 亚洲国产成人精品视频| 看国产成人h片视频| 成人三级伦理片| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩国产精品成人| 精品区一区二区| 亚洲免费观看在线视频| 看片网站欧美日韩| 欧美日韩国产精选| 日本一区二区免费在线| 男女男精品网站| 欧美日韩高清一区二区| 亚洲综合区在线| 91一区二区在线| 国产精品毛片高清在线完整版| 免费一级片91| av电影在线观看一区| 国产欧美日韩另类视频免费观看| 日韩电影网1区2区| 欧美丰满一区二区免费视频| 1000精品久久久久久久久| 成人免费av网站| 中文幕一区二区三区久久蜜桃| 成人国产电影网| 国产精品久久久久7777按摩| 亚洲在线成人精品| 成人黄色软件下载| 久久久精品国产99久久精品芒果| 丝袜诱惑亚洲看片| 91精品国产一区二区三区| 亚洲一区视频在线| 欧美精品一级二级三级| 免费观看成人av| www一区二区| 色综合色综合色综合 | 色视频一区二区| 一区二区在线观看视频| 精品视频一区二区不卡| 乱一区二区av| 中文字幕在线一区免费| 欧美在线观看视频一区二区| 午夜欧美在线一二页| 亚洲成av人片在线观看无码| 91女厕偷拍女厕偷拍高清| 亚洲激情图片小说视频| 久久网站最新地址| 色猫猫国产区一区二在线视频| 天堂va蜜桃一区二区三区漫画版 | 91视频国产资源| 国产尤物一区二区在线| 一区二区三区免费网站| 欧美成人vr18sexvr| 欧美偷拍一区二区| 国产一区二区三区在线观看精品| 精品国产一区二区三区av性色| 成人黄色小视频| 三级欧美在线一区| 国产欧美日韩不卡免费| 色综合天天综合网天天看片| 亚洲一区电影777| 国产精品狼人久久影院观看方式| 欧美午夜理伦三级在线观看| 丰满白嫩尤物一区二区| 亚洲与欧洲av电影| 日本一区免费视频| 欧美精品少妇一区二区三区| 成人免费黄色在线| 狠狠色丁香婷综合久久| 日韩av中文字幕一区二区三区| 亚洲免费av高清| 亚洲丝袜自拍清纯另类| 26uuu国产一区二区三区| 欧美精品黑人性xxxx| 色综合久久综合| 色哟哟一区二区在线观看| 国内成人免费视频| 久久99深爱久久99精品| 国产一区二区主播在线| 日韩电影在线观看电影| 日韩精品每日更新| 国产精品萝li| 亚洲欧美日韩电影| 亚洲男人电影天堂| 亚洲免费观看高清在线观看| 中文字幕巨乱亚洲| 中文字幕一区二| 国产三区在线成人av| 中文字幕不卡在线观看| 欧美国产欧美亚州国产日韩mv天天看完整 | 88在线观看91蜜桃国自产| 欧美一区永久视频免费观看| 欧美一级一级性生活免费录像| 2021中文字幕一区亚洲| 国产精品麻豆一区二区| 日日欢夜夜爽一区| 成人深夜福利app| 欧洲一区在线观看| 国产精品视频在线看| 日韩精品一二三| 国产精品18久久久久久vr| 国产成人在线免费观看| 亚洲成在线观看| 久久福利视频一区二区| 91网站最新网址| 国产精品国产三级国产| 亚洲不卡av一区二区三区| 成人av先锋影音| 欧美男男青年gay1069videost| 国产精品国产馆在线真实露脸| 美女视频黄频大全不卡视频在线播放| 国产成人免费视频一区| 欧美mv日韩mv亚洲| 日本免费在线视频不卡一不卡二| 高清在线不卡av| 国产日韩精品一区二区三区| 亚洲va天堂va国产va久| 91色视频在线| 中文字幕综合网| 成人app下载|