⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extendedpatternformatter.java

📁 基于Jabber协议的即时消息服务器
💻 JAVA
字号:
/* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE file. */package org.jivesoftware.util.log.format;import org.jivesoftware.util.Log;import org.jivesoftware.util.log.ContextMap;import org.jivesoftware.util.log.LogEvent;import org.jivesoftware.util.log.util.StackIntrospector;/** * Formatter especially designed for debugging applications. * <p/> * This formatter extends the standard PatternFormatter to add * two new possible expansions. These expansions are %{method} * and %{thread}. In both cases the context map is first checked * for values with specified key. This is to facilitate passing * information about caller/thread when threads change (as in * AsyncLogTarget). They then attempt to determine appropriate * information dynamically. * * @author <a href="mailto:peter@apache.org">Peter Donald</a> * @version CVS $Revision: 37 $ $Date: 2004-10-20 23:08:43 -0700 (Wed, 20 Oct 2004) $ */public class ExtendedPatternFormatter extends PatternFormatter {    private final static int TYPE_METHOD = MAX_TYPE + 1;    private final static int TYPE_THREAD = MAX_TYPE + 2;    private final static String TYPE_METHOD_STR = "method";    private final static String TYPE_THREAD_STR = "thread";    public ExtendedPatternFormatter(final String format) {        super(format);    }    /**     * Retrieve the type-id for a particular string.     *     * @param type the string     * @return the type-id     */    protected int getTypeIdFor(final String type) {        if (type.equalsIgnoreCase(TYPE_METHOD_STR))            return TYPE_METHOD;        else if (type.equalsIgnoreCase(TYPE_THREAD_STR))            return TYPE_THREAD;        else {            return super.getTypeIdFor(type);        }    }    /**     * Formats a single pattern run (can be extended in subclasses).     *     * @param run the pattern run to format.     * @return the formatted result.     */    protected String formatPatternRun(final LogEvent event, final PatternRun run) {        switch (run.m_type) {            case TYPE_METHOD:                return getMethod(event, run.m_format);            case TYPE_THREAD:                return getThread(event, run.m_format);            default:                return super.formatPatternRun(event, run);        }    }    /**     * Utility method to format category.     *     * @param event     * @param format ancilliary format parameter - allowed to be null     * @return the formatted string     */    private String getMethod(final LogEvent event, final String format) {        final ContextMap map = event.getContextMap();        if (null != map) {            final Object object = map.get("method");            if (null != object) {                return object.toString();            }        }//        final String result = StackIntrospector.getCallerMethod(Logger.class);        final String result = StackIntrospector.getCallerMethod(Log.class);        if (null == result) {            return "UnknownMethod";        }        return result;    }    /**     * Utility thread to format category.     *     * @param event     * @param format ancilliary format parameter - allowed to be null     * @return the formatted string     */    private String getThread(final LogEvent event, final String format) {        final ContextMap map = event.getContextMap();        if (null != map) {            final Object object = map.get("thread");            if (null != object) {                return object.toString();            }        }        return Thread.currentThread().getName();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -