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

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

?? lf5appender.java

?? log4j的源碼
?? JAVA
字號:
/* * Copyright 1999-2005 The Apache Software Foundation. *  * Licensed 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.lf5;import org.apache.log4j.lf5.util.Resource;import org.apache.log4j.lf5.viewer.LogBrokerMonitor;import org.apache.log4j.AppenderSkeleton;import org.apache.log4j.spi.LocationInfo;import org.apache.log4j.spi.LoggingEvent;import java.awt.*;/** * <code>LF5Appender</code> logs events to a swing based logging * console. The swing console supports turning categories on and off, * multiple detail level views, as well as full text searching and many * other capabilties. * * @author Brent Sprecher */// Contributed by ThoughtWorks Inc.public class LF5Appender extends AppenderSkeleton {  //--------------------------------------------------------------------------  // Constants:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  // Protected Variables:  //--------------------------------------------------------------------------  protected LogBrokerMonitor _logMonitor;  protected static LogBrokerMonitor _defaultLogMonitor;  protected static AppenderFinalizer _finalizer;  //--------------------------------------------------------------------------  // Private Variables:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  // Constructors:  //--------------------------------------------------------------------------  /**   * Constructs a <code>LF5Appender</code> using the default instance of   * the <code>LogBrokerMonitor</code>. This constructor should <bold>always   * </bold> be  preferred over the   * <code>LF5Appender(LogBrokerMonitor monitor)</code>   * constructor, unless you need to spawn additional log monitoring   * windows.   */  public LF5Appender() {    this(getDefaultInstance());  }  /**   * Constructs a <code>LF5Appender<code> using an instance of   * a <code>LogBrokerMonitor<code> supplied by the user. This   * constructor should only be used when you need to spawn   * additional log monitoring windows.   *   * @param monitor An instance of a <code>LogBrokerMonitor<code>   * created by the user.   */  public LF5Appender(LogBrokerMonitor monitor) {    if (monitor != null) {      _logMonitor = monitor;    }  }  //--------------------------------------------------------------------------  // Public Methods:  //--------------------------------------------------------------------------  /**   * Appends a <code>LoggingEvent</code> record to the   * <code>LF5Appender</code>.   * @param event The <code>LoggingEvent</code>   * to be appended.   */  public void append(LoggingEvent event) {    // Retrieve the information from the log4j LoggingEvent.    String category = event.getLoggerName();    String logMessage = event.getRenderedMessage();    String nestedDiagnosticContext = event.getNDC();    String threadDescription = event.getThreadName();    String level = event.getLevel().toString();    long time = event.timeStamp;    LocationInfo locationInfo = event.getLocationInformation();    // Add the logging event information to a LogRecord    Log4JLogRecord record = new Log4JLogRecord();    record.setCategory(category);    record.setMessage(logMessage);    record.setLocation(locationInfo.fullInfo);    record.setMillis(time);    record.setThreadDescription(threadDescription);    if (nestedDiagnosticContext != null) {      record.setNDC(nestedDiagnosticContext);    } else {      record.setNDC("");    }    if (event.getThrowableInformation() != null) {      record.setThrownStackTrace(event.getThrowableInformation());    }    try {      record.setLevel(LogLevel.valueOf(level));    } catch (LogLevelFormatException e) {      // If the priority level doesn't match one of the predefined      // log levels, then set the level to warning.      record.setLevel(LogLevel.WARN);    }    if (_logMonitor != null) {      _logMonitor.addMessage(record);    }  }  /**   * This method is an empty implementation of the close() method inherited   * from the <code>org.apache.log4j.Appender</code> interface.   */  public void close() {  }  /**   * Returns a value that indicates whether this appender requires a   * <code>Layout</code>. This method always returns false.   * No layout is required for the <code>LF5Appender</code>.   */  public boolean requiresLayout() {    return false;  }  /**   * This method is used to set the property that controls whether   * the <code>LogBrokerMonitor</code> is hidden or closed when a user   * exits   * the monitor. By default, the <code>LogBrokerMonitor</code> will hide   * itself when the log window is exited, and the swing thread will   * continue to run in the background. If this property is   * set to true, the <code>LogBrokerMonitor</code> will call System.exit(0)   * and will shut down swing thread and the virtual machine.   *   * @param callSystemExitOnClose A boolean value indicating whether   * to call System.exit(0) when closing the log window.   */  public void setCallSystemExitOnClose(boolean callSystemExitOnClose) {    _logMonitor.setCallSystemExitOnClose(callSystemExitOnClose);  }  /**   * The equals method compares two LF5Appenders and determines whether   * they are equal. Two <code>Appenders</code> will be considered equal   * if, and only if, they both contain references to the same <code>   * LogBrokerMonitor</code>.   *   * @param compareTo A boolean value indicating whether   * the two LF5Appenders are equal.   */  public boolean equals(LF5Appender compareTo) {    // If both reference the same LogBrokerMonitor, they are equal.    return _logMonitor == compareTo.getLogBrokerMonitor();  }  public LogBrokerMonitor getLogBrokerMonitor() {    return _logMonitor;  }  public static void main(String[] args) {    new LF5Appender();  }  public void setMaxNumberOfRecords(int maxNumberOfRecords) {    _defaultLogMonitor.setMaxNumberOfLogRecords(maxNumberOfRecords);  }  //--------------------------------------------------------------------------  // Protected Methods:  //--------------------------------------------------------------------------  /**   * @return The default instance of the <code>LogBrokerMonitor</code>.   */  protected static synchronized LogBrokerMonitor getDefaultInstance() {    if (_defaultLogMonitor == null) {      try {        _defaultLogMonitor =            new LogBrokerMonitor(LogLevel.getLog4JLevels());        _finalizer = new AppenderFinalizer(_defaultLogMonitor);        _defaultLogMonitor.setFrameSize(getDefaultMonitorWidth(),            getDefaultMonitorHeight());        _defaultLogMonitor.setFontSize(12);        _defaultLogMonitor.show();      } catch (SecurityException e) {        _defaultLogMonitor = null;      }    }    return _defaultLogMonitor;  }  /**   * @return the screen width from Toolkit.getScreenSize()   * if possible, otherwise returns 800   * @see java.awt.Toolkit   */  protected static int getScreenWidth() {    try {      return Toolkit.getDefaultToolkit().getScreenSize().width;    } catch (Throwable t) {      return 800;    }  }  /**   * @return the screen height from Toolkit.getScreenSize()   * if possible, otherwise returns 600   * @see java.awt.Toolkit   */  protected static int getScreenHeight() {    try {      return Toolkit.getDefaultToolkit().getScreenSize().height;    } catch (Throwable t) {      return 600;    }  }  protected static int getDefaultMonitorWidth() {    return (3 * getScreenWidth()) / 4;  }  protected static int getDefaultMonitorHeight() {    return (3 * getScreenHeight()) / 4;  }  //--------------------------------------------------------------------------  // Private Methods:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  // Nested Top-Level Classes or Interfaces:  //--------------------------------------------------------------------------}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一卡二卡三卡 | 国产高清久久久| 欧美一区二区在线播放| 日本不卡免费在线视频| 日韩一区和二区| 毛片基地黄久久久久久天堂| 日韩欧美久久久| 精品一区二区三区免费播放| 国产亚洲精品超碰| 色综合久久中文综合久久牛| 亚洲国产欧美在线人成| 欧美精品日韩精品| 精品一区二区三区不卡 | 粉嫩一区二区三区性色av| 国产精品国产自产拍高清av| 一本一道综合狠狠老| 亚洲国产欧美日韩另类综合 | 亚洲欧美日韩在线播放| 欧美色涩在线第一页| 蜜桃视频一区二区三区| 日本一区二区综合亚洲| 色综合中文字幕国产| 午夜日韩在线电影| 久久先锋影音av鲁色资源| 成人黄色电影在线| 亚洲图片欧美色图| 国产欧美日韩综合精品一区二区| 白白色 亚洲乱淫| 日本不卡中文字幕| 国产精品免费人成网站| 欧美日韩成人激情| 国产不卡免费视频| 青草国产精品久久久久久| 国产精品福利一区二区| 在线成人免费观看| 91小视频在线| 国产精品一区二区久久不卡| 亚洲靠逼com| 久久综合久久鬼色| 色丁香久综合在线久综合在线观看| 日本人妖一区二区| 亚洲精品久久久蜜桃| 久久久久免费观看| 日韩亚洲欧美成人一区| 91国偷自产一区二区开放时间| 国模娜娜一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 国产色91在线| 欧美日韩国产a| 成人国产精品免费观看动漫| 美女网站在线免费欧美精品| 亚洲免费观看视频| 久久久国产精华| 日韩美女视频一区二区在线观看| 一道本成人在线| www.亚洲在线| 国产成人免费在线观看不卡| 蜜桃av一区二区三区| 亚洲福利一区二区| 亚洲自拍另类综合| 国产欧美一区二区精品性| 日韩欧美三级在线| 日韩一区二区三区视频在线| 欧美疯狂性受xxxxx喷水图片| 在线免费观看成人短视频| 91在线播放网址| 丁香桃色午夜亚洲一区二区三区| 精品亚洲国内自在自线福利| 麻豆91精品91久久久的内涵| 日产国产高清一区二区三区| 亚洲电影视频在线| 亚洲国产精品久久人人爱蜜臀| 日韩一区在线看| 国产精品国产自产拍高清av王其| 欧美韩国日本综合| 国产精品欧美经典| 亚洲国产精品av| 国产精品久久久久久久浪潮网站 | 国产精品免费久久久久| 久久久综合九色合综国产精品| 欧美一区二区免费| 91精品国产综合久久国产大片| 欧美色倩网站大全免费| 91成人网在线| 91精品国产一区二区| 欧美日韩国产电影| 日韩欧美一二三区| 26uuuu精品一区二区| 久久影院午夜片一区| 欧美激情在线一区二区三区| 中文字幕在线播放不卡一区| 亚洲精品亚洲人成人网在线播放| 一二三区精品福利视频| 午夜在线电影亚洲一区| 美女视频黄 久久| 国产成人免费在线视频| 99re热视频这里只精品| 欧美亚洲国产一区二区三区 | 国产女同性恋一区二区| 中文字幕一区二区三区不卡 | 国产成人精品aa毛片| 91亚洲永久精品| 欧美性xxxxxxxx| 日韩免费高清视频| 国产精品成人网| 性做久久久久久免费观看欧美| 蜜臀精品久久久久久蜜臀| 国产精品资源网站| 色综合天天在线| 91精品国产综合久久久久| 国产人成一区二区三区影院| 亚洲男人天堂av网| 男人的天堂亚洲一区| 国产精品中文有码| 在线观看区一区二| 精品久久久网站| 一区二区免费在线播放| 久久99热99| 色www精品视频在线观看| 日韩女优视频免费观看| 亚洲视频每日更新| 狠狠色丁香久久婷婷综合_中| 99视频一区二区| 精品国产乱码久久久久久图片| 亚洲欧洲www| 韩国毛片一区二区三区| 91福利国产精品| 国产精品网站在线| 色综合久久九月婷婷色综合| 日韩精品资源二区在线| 中文字幕欧美日本乱码一线二线| 亚洲三级在线播放| 韩国v欧美v亚洲v日本v| 欧美日韩亚洲综合在线| 国产精品电影院| 国产综合久久久久久久久久久久| 91高清视频免费看| 日本一区二区动态图| 免费高清视频精品| 欧美性大战久久久| 亚洲欧洲性图库| 国产精品一区二区男女羞羞无遮挡| 欧美亚州韩日在线看免费版国语版| 久久亚洲一区二区三区四区| 丝袜美腿成人在线| 色老头久久综合| 国产精品久久久99| 国产激情视频一区二区三区欧美 | 精品国产乱码久久久久久老虎| 亚洲综合一二区| 91丨porny丨最新| 中文字幕国产一区| 国产·精品毛片| 久久综合久色欧美综合狠狠| 久久se这里有精品| 日韩美女视频在线| 亚洲一区二区在线免费看| 成人精品视频一区| 国产免费久久精品| 国产99精品视频| 亚洲国产精品99久久久久久久久| 国产美女主播视频一区| 欧美videos中文字幕| 日本不卡一区二区| 日韩精品中午字幕| 精品一区二区三区久久久| 欧美r级在线观看| 麻豆视频观看网址久久| 日韩欧美第一区| 看国产成人h片视频| 欧美videossexotv100| 韩国成人精品a∨在线观看| 久久综合久色欧美综合狠狠| 国产精品白丝jk黑袜喷水| 国产亚洲福利社区一区| 国产精品18久久久久| 国产欧美综合在线| 成人av综合一区| 亚洲黄一区二区三区| 欧美色网一区二区| 婷婷激情综合网| 精品成人私密视频| 成人激情开心网| 亚洲综合清纯丝袜自拍| 欧美美女网站色| 久久国产成人午夜av影院| 精品国产一区二区三区不卡| 国产成人综合精品三级| 亚洲欧洲韩国日本视频| 欧美日韩在线播| 激情综合五月婷婷| 国产精品麻豆久久久| 在线中文字幕不卡| 老汉av免费一区二区三区| 国产日韩一级二级三级| 91麻豆蜜桃一区二区三区| 天天综合色天天综合| www亚洲一区| 色婷婷精品大在线视频| 日韩国产高清在线|