You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2007/04/04 15:23:11 UTC
DO NOT REPLY [Bug 42044] - Multiple/composite logs for ant builds
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=42044>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=42044
------- Additional Comments From KetanPadegaonkar+apache-bugs@gmail.com 2007-04-04 06:23 -------
This is the source code for a CompositeLogger that logs to a default logger, and
the XmlLogger. This needs the environment variable ANT_LOG_PREFIX to be set
(there's no better way I can think of)
/*******************************************************************************
* Copyright 2007 Ketan Padegaonkar http://ketan.padegaonkar.name
*
* 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 name.padegaonkar.ketan.ant.logger;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.tools.ant.BuildEvent;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildLogger;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.XmlLogger;
/**
* @author Ketan Padegaonkar
*/
public class CompositeAntLogger implements BuildLogger {
private ArrayList loggers;
private String logPrefix;
private PrintStream out;
public CompositeAntLogger() {
checkLogPrefix();
createLoggers();
}
public void setEmacsMode(boolean emacsMode) {
for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
BuildLogger logger = (BuildLogger) iterator.next();
logger.setEmacsMode(emacsMode);
}
}
public void buildFinished(BuildEvent event) {
for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
BuildLogger logger = (BuildLogger) iterator.next();
logger.buildFinished(event);
}
}
public void buildStarted(BuildEvent event) {
for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
BuildLogger logger = (BuildLogger) iterator.next();
logger.buildStarted(event);
}
}
public void messageLogged(BuildEvent event) {
for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
BuildLogger logger = (BuildLogger) iterator.next();
logger.messageLogged(event);
}
}
public void targetFinished(BuildEvent event) {
for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
BuildLogger logger = (BuildLogger) iterator.next();
logger.targetFinished(event);
}
}
public void targetStarted(BuildEvent event) {
for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
BuildLogger logger = (BuildLogger) iterator.next();
logger.targetStarted(event);
}
}
public void taskFinished(BuildEvent event) {
for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
BuildLogger logger = (BuildLogger) iterator.next();
logger.taskFinished(event);
}
}
public void taskStarted(BuildEvent event) {
for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
BuildLogger logger = (BuildLogger) iterator.next();
logger.taskStarted(event);
}
}
public void setMessageOutputLevel(int level) {
for (Iterator iterator = loggers.iterator(); iterator.hasNext();) {
BuildLogger logger = (BuildLogger) iterator.next();
logger.setMessageOutputLevel(level);
}
}
public void setOutputPrintStream(PrintStream output) {
// do nothing
}
public void setErrorPrintStream(PrintStream err) {
// do nothing
}
private void createLoggers() {
loggers = new ArrayList();
try {
loggers.add(createDefaultLogger());
loggers.add(createXmlLogger());
} catch (FileNotFoundException e) {
throw new BuildException("The loggers could not open the
file", e);
}
}
private void checkLogPrefix() {
logPrefix = System.getenv("ANT_LOG_PREFIX");
if (logPrefix == null || logPrefix.trim().length() == 0)
throw new BuildException("You need to set the
environment variable ANT_LOG_PREFIX.");
}
private DefaultLogger createDefaultLogger() throws FileNotFoundException {
DefaultLogger logger = new DefaultLogger();
out = new PrintStream(new FileOutputStream(logPrefix + ".txt"));
logger.setOutputPrintStream(out);
logger.setErrorPrintStream(out);
return logger;
}
private XmlLogger createXmlLogger() throws FileNotFoundException {
XmlLogger logger = new XmlLogger();
out = new PrintStream(new FileOutputStream(logPrefix + ".xml"));
logger.setOutputPrintStream(out);
logger.setErrorPrintStream(out);
return logger;
}
}
--
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org