Author: jkf Date: Thu Nov 16 08:08:45 2006 New Revision: 475788 URL: http://svn.apache.org/viewvc?view=rev&rev=475788 Log: Added logging of stacktraces of exceptions in logmessage when loglevel = debug. Made first use of this logging in the Delete task.
Modified: ant/core/trunk/src/main/org/apache/tools/ant/BuildEvent.java ant/core/trunk/src/main/org/apache/tools/ant/BuildListener.java ant/core/trunk/src/main/org/apache/tools/ant/DefaultLogger.java ant/core/trunk/src/main/org/apache/tools/ant/Project.java ant/core/trunk/src/main/org/apache/tools/ant/Task.java ant/core/trunk/src/main/org/apache/tools/ant/XmlLogger.java ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Delete.java Modified: ant/core/trunk/src/main/org/apache/tools/ant/BuildEvent.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/BuildEvent.java?view=diff&rev=475788&r1=475787&r2=475788 ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/BuildEvent.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/BuildEvent.java Thu Nov 16 08:08:45 2006 @@ -46,7 +46,7 @@ private int priority = Project.MSG_VERBOSE; /** * The exception associated with this event, if any. - * This is only used for "taskFinished", "targetFinished", + * This is only used for "messageLogged", "taskFinished", "targetFinished", * and "buildFinished" events. */ private Throwable exception; @@ -112,12 +112,13 @@ /** * Sets the exception associated with this event. This is used - * for "taskFinished", "targetFinished", and "buildFinished" + * for "messageLogged", "taskFinished", "targetFinished", and "buildFinished" * events. * * @param exception The exception to be associated with this event. * May be <code>null</code>. * + * @see BuildListener#messageLogged(BuildEvent) * @see BuildListener#taskFinished(BuildEvent) * @see BuildListener#targetFinished(BuildEvent) * @see BuildListener#buildFinished(BuildEvent) @@ -183,12 +184,13 @@ /** * Returns the exception that was thrown, if any. This field will only - * be set for "taskFinished", "targetFinished", and "buildFinished" + * be set for "messageLogged", "taskFinished", "targetFinished", and "buildFinished" * events. * * @return the exception associated with this exception, or * <code>null</code> if no exception has been set. - * + * + * @see BuildListener#messageLogged(BuildEvent) * @see BuildListener#taskFinished(BuildEvent) * @see BuildListener#targetFinished(BuildEvent) * @see BuildListener#buildFinished(BuildEvent) Modified: ant/core/trunk/src/main/org/apache/tools/ant/BuildListener.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/BuildListener.java?view=diff&rev=475788&r1=475787&r2=475788 ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/BuildListener.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/BuildListener.java Thu Nov 16 08:08:45 2006 @@ -99,6 +99,7 @@ * Must not be <code>null</code>. * * @see BuildEvent#getMessage() + * @see BuildEvent#getException() * @see BuildEvent#getPriority() */ void messageLogged(BuildEvent event); Modified: ant/core/trunk/src/main/org/apache/tools/ant/DefaultLogger.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/DefaultLogger.java?view=diff&rev=475788&r1=475787&r2=475788 ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/DefaultLogger.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/DefaultLogger.java Thu Nov 16 08:08:45 2006 @@ -277,6 +277,10 @@ } else { message.append(event.getMessage()); } + Throwable ex = event.getException(); + if (Project.MSG_DEBUG <= msgOutputLevel && ex != null) { + message.append(StringUtils.getStackTrace(ex)); + } String msg = message.toString(); if (priority != Project.MSG_ERR) { Modified: ant/core/trunk/src/main/org/apache/tools/ant/Project.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/Project.java?view=diff&rev=475788&r1=475787&r2=475788 ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/Project.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/Project.java Thu Nov 16 08:08:45 2006 @@ -425,20 +425,41 @@ * @param msgLevel The log priority level to use. */ public void log(String message, int msgLevel) { - fireMessageLogged(this, message, msgLevel); + log(message, null, msgLevel); } /** + * Write a project level message to the log with the given log level. + * @param message The text to log. Should not be <code>null</code>. + * @param throwable The exception causing this log, may be <code>null</code>. + * @param msgLevel The log priority level to use. + */ + public void log(String message, Throwable throwable, int msgLevel) { + fireMessageLogged(this, message, throwable, msgLevel); + } + + /** * Write a task level message to the log with the given log level. * @param task The task to use in the log. Must not be <code>null</code>. * @param message The text to log. Should not be <code>null</code>. * @param msgLevel The log priority level to use. */ public void log(Task task, String message, int msgLevel) { - fireMessageLogged(task, message, msgLevel); + fireMessageLogged(task, message, null, msgLevel); } /** + * Write a task level message to the log with the given log level. + * @param task The task to use in the log. Must not be <code>null</code>. + * @param message The text to log. Should not be <code>null</code>. + * @param throwable The exception causing this log, may be <code>null</code>. + * @param msgLevel The log priority level to use. + */ + public void log(Task task, String message, Throwable throwable, int msgLevel) { + fireMessageLogged(task, message, throwable, msgLevel); + } + + /** * Write a target level message to the log with the given log level. * @param target The target to use in the log. * Must not be <code>null</code>. @@ -446,10 +467,23 @@ * @param msgLevel The log priority level to use. */ public void log(Target target, String message, int msgLevel) { - fireMessageLogged(target, message, msgLevel); + log(target, message, null, msgLevel); } /** + * Write a target level message to the log with the given log level. + * @param target The target to use in the log. + * Must not be <code>null</code>. + * @param message The text to log. Should not be <code>null</code>. + * @param throwable The exception causing this log, may be <code>null</code>. + * @param msgLevel The log priority level to use. + */ + public void log(Target target, String message, Throwable throwable, + int msgLevel) { + fireMessageLogged(target, message, throwable, msgLevel); + } + + /** * Return the set of global filters. * * @return the set of global filters. @@ -2150,10 +2184,26 @@ */ protected void fireMessageLogged(Project project, String message, int priority) { + fireMessageLogged(project, message, priority); + } + + /** + * Send a "message logged" project level event + * to the build listeners for this project. + * + * @param project The project generating the event. + * Should not be <code>null</code>. + * @param message The message to send. Should not be <code>null</code>. + * @param throwable The exception that caused this message. May be <code>null</code>. + * @param priority The priority of the message. + */ + protected void fireMessageLogged(Project project, String message, + Throwable throwable, int priority) { BuildEvent event = new BuildEvent(project); + event.setException(throwable); fireMessageLoggedEvent(event, message, priority); } - + /** * Send a "message logged" target level event * to the build listeners for this project. @@ -2165,10 +2215,26 @@ */ protected void fireMessageLogged(Target target, String message, int priority) { + fireMessageLogged(target, message, null, priority); + } + + /** + * Send a "message logged" target level event + * to the build listeners for this project. + * + * @param target The target generating the event. + * Must not be <code>null</code>. + * @param message The message to send. Should not be <code>null</code>. + * @param throwable The exception that caused this message. May be <code>null</code>. + * @param priority The priority of the message. + */ + protected void fireMessageLogged(Target target, String message, + Throwable throwable, int priority) { BuildEvent event = new BuildEvent(target); + event.setException(throwable); fireMessageLoggedEvent(event, message, priority); } - + /** * Send a "message logged" task level event * to the build listeners for this project. @@ -2179,10 +2245,26 @@ * @param priority The priority of the message. */ protected void fireMessageLogged(Task task, String message, int priority) { + fireMessageLogged(task, message, null, priority); + } + + /** + * Send a "message logged" task level event + * to the build listeners for this project. + * + * @param task The task generating the event. + * Must not be <code>null</code>. + * @param message The message to send. Should not be <code>null</code>. + * @param throwable The exception that caused this message. May be <code>null</code>. + * @param priority The priority of the message. + */ + protected void fireMessageLogged(Task task, String message, + Throwable throwable, int priority) { BuildEvent event = new BuildEvent(task); + event.setException(throwable); fireMessageLoggedEvent(event, message, priority); } - + /** * Register a task as the current task for a thread. * If the task is null, the thread's entry is removed. Modified: ant/core/trunk/src/main/org/apache/tools/ant/Task.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/Task.java?view=diff&rev=475788&r1=475787&r2=475788 ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/Task.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/Task.java Thu Nov 16 08:08:45 2006 @@ -328,6 +328,38 @@ } /** + * Logs a message with the given priority. This delegates + * the actual logging to the project. + * + * @param t The exception to be logged. Should not be <code>null</code>. + * @param msgLevel The message priority at which this message is to + * be logged. + */ + public void log(Throwable t, int msgLevel) { + if(t != null) + { + log(t.getMessage(), t, msgLevel); + } + } + + /** + * Logs a message with the given priority. This delegates + * the actual logging to the project. + * + * @param msg The message to be logged. Should not be <code>null</code>. + * @param t The exception to be logged. May be <code>null</code>. + * @param msgLevel The message priority at which this message is to + * be logged. + */ + public void log(String msg, Throwable t, int msgLevel) { + if (getProject() != null) { + getProject().log(this, msg, t, msgLevel); + } else { + super.log(msg, msgLevel); + } + } + + /** * Performs this task if it's still valid, or gets a replacement * version and performs that otherwise. * Modified: ant/core/trunk/src/main/org/apache/tools/ant/XmlLogger.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/XmlLogger.java?view=diff&rev=475788&r1=475787&r2=475788 ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/XmlLogger.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/XmlLogger.java Thu Nov 16 08:08:45 2006 @@ -398,6 +398,13 @@ } 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); Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Delete.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Delete.java?view=diff&rev=475788&r1=475787&r2=475788 ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Delete.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Delete.java Thu Nov 16 08:08:45 2006 @@ -621,7 +621,7 @@ throw (e instanceof BuildException) ? (BuildException) e : new BuildException(e); } - log(e.getMessage(), quiet ? Project.MSG_VERBOSE : verbosity); + log(e, quiet ? Project.MSG_VERBOSE : verbosity); } /** --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]