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

📄 xmllogger.java

📁 Use the links below to download a source distribution of Ant from one of our mirrors. It is good pra
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     *     * @param event An event with any relevant extra information.     *              Will not be <code>null</code>.     */    public void targetFinished(BuildEvent event) {        Target target = event.getTarget();        TimedElement targetElement = (TimedElement) targets.get(target);        if (targetElement != null) {            long totalTime                    = System.currentTimeMillis() - targetElement.startTime;            targetElement.element.setAttribute(TIME_ATTR,                    DefaultLogger.formatTime(totalTime));            TimedElement parentElement = null;            Stack threadStack = getStack();            if (!threadStack.empty()) {                TimedElement poppedStack = (TimedElement) threadStack.pop();                if (poppedStack != targetElement) {                    throw new RuntimeException("Mismatch - popped element = "                            + poppedStack                            + " finished target element = "                            + targetElement);                }                if (!threadStack.empty()) {                    parentElement = (TimedElement) threadStack.peek();                }            }            if (parentElement == null) {                buildElement.element.appendChild(targetElement.element);            } else {                parentElement.element.appendChild(targetElement.element);            }        }        targets.remove(target);    }    /**     * Fired when a task starts building, this pushes a timed element     * for the task onto the stack of elements for the current thread,     * remembering the current time and the name of the task.     *     * @param event An event with any relevant extra information.     *              Will not be <code>null</code>.     */    public void taskStarted(BuildEvent event) {        TimedElement taskElement = new TimedElement();        taskElement.startTime = System.currentTimeMillis();        taskElement.element = doc.createElement(TASK_TAG);        Task task = event.getTask();        String name = event.getTask().getTaskName();        if (name == null) {            name = "";        }        taskElement.element.setAttribute(NAME_ATTR, name);        taskElement.element.setAttribute(LOCATION_ATTR,                event.getTask().getLocation().toString());        tasks.put(task, taskElement);        getStack().push(taskElement);    }    /**     * Fired when a task finishes building, this adds the time taken     * and any error stacktrace to the appropriate task element in the log.     *     * @param event An event with any relevant extra information.     *              Will not be <code>null</code>.     */    public void taskFinished(BuildEvent event) {        Task task = event.getTask();        TimedElement taskElement = (TimedElement) tasks.get(task);        if (taskElement != null) {            long totalTime = System.currentTimeMillis() - taskElement.startTime;            taskElement.element.setAttribute(TIME_ATTR,                    DefaultLogger.formatTime(totalTime));            Target target = task.getOwningTarget();            TimedElement targetElement = null;            if (target != null) {                targetElement = (TimedElement) targets.get(target);            }            if (targetElement == null) {                buildElement.element.appendChild(taskElement.element);            } else {                targetElement.element.appendChild(taskElement.element);            }            Stack threadStack = getStack();            if (!threadStack.empty()) {                TimedElement poppedStack = (TimedElement) threadStack.pop();                if (poppedStack != taskElement) {                    throw new RuntimeException("Mismatch - popped element = "                            + poppedStack + " finished task element = "                            + taskElement);                }            }            tasks.remove(task);        } else {            throw new RuntimeException("Unknown task " + task + " not in " + tasks);        }    }    /**     * Get the TimedElement associated with a task.     *     * Where the task is not found directly, search for unknown elements which     * may be hiding the real task     */    private TimedElement getTaskElement(Task task) {        TimedElement element = (TimedElement) tasks.get(task);        if (element != null) {            return element;        }        for (Enumeration e = tasks.keys(); e.hasMoreElements();) {            Task key = (Task) e.nextElement();            if (key instanceof UnknownElement) {                if (((UnknownElement) key).getTask() == task) {                    return (TimedElement) tasks.get(key);                }            }        }        return null;    }    /**     * Fired when a message is logged, this adds a message element to the     * most appropriate parent element (task, target or build) and records     * the priority and text of the message.     *     * @param event An event with any relevant extra information.     *              Will not be <code>null</code>.     */    public void messageLogged(BuildEvent event) {        int priority = event.getPriority();        if (priority > msgOutputLevel) {            return;        }        Element messageElement = doc.createElement(MESSAGE_TAG);        String name = "debug";        switch (event.getPriority()) {            case Project.MSG_ERR:                name = "error";                break;            case Project.MSG_WARN:                name = "warn";                break;            case Project.MSG_INFO:                name = "info";                break;            default:                name = "debug";                break;        }        messageElement.setAttribute(PRIORITY_ATTR, name);        Throwable ex = event.getException();        if (Project.MSG_DEBUG <= msgOutputLevel && ex != null) {            Text errText = doc.createCDATASection(StringUtils.getStackTrace(ex));            Element stacktrace = doc.createElement(STACKTRACE_TAG);            stacktrace.appendChild(errText);            buildElement.element.appendChild(stacktrace);        }        Text messageText = doc.createCDATASection(event.getMessage());        messageElement.appendChild(messageText);        TimedElement parentElement = null;        Task task = event.getTask();        Target target = event.getTarget();        if (task != null) {            parentElement = getTaskElement(task);        }        if (parentElement == null && target != null) {            parentElement = (TimedElement) targets.get(target);        }        /*        if (parentElement == null) {            Stack threadStack                    = (Stack) threadStacks.get(Thread.currentThread());            if (threadStack != null) {                if (!threadStack.empty()) {                    parentElement = (TimedElement) threadStack.peek();                }            }        }        */        if (parentElement != null) {            parentElement.element.appendChild(messageElement);        } else {            buildElement.element.appendChild(messageElement);        }    }    // -------------------------------------------------- BuildLogger interface    /**     * Set the logging level when using this as a Logger     *     * @param level the logging level -     *        see {@link org.apache.tools.ant.Project#MSG_ERR Project}     *        class for level definitions     */    public void setMessageOutputLevel(int level) {        msgOutputLevel = level;    }    /**     * Set the output stream to which logging output is sent when operating     * as a logger.     *     * @param output the output PrintStream.     */    public void setOutputPrintStream(PrintStream output) {        this.outStream = new PrintStream(output, true);    }    /**     * Ignore emacs mode, as it has no meaning in XML format     *     * @param emacsMode true if logger should produce emacs compatible     *        output     */    public void setEmacsMode(boolean emacsMode) {    }    /**     * Ignore error print stream. All output will be written to     * either the XML log file or the PrintStream provided to     * setOutputPrintStream     *     * @param err the stream we are going to ignore.     */    public void setErrorPrintStream(PrintStream err) {    }}

⌨️ 快捷键说明

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