package org.oddjob.logging.log4j; import java.io.OutputStream; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.oddjob.arooa.convert.ArooaConversionException; import org.oddjob.arooa.types.ValueFactory; /** * @oddjob.description Provide an output to a logger. With a default * Oddjob configuration log messages will be visible in the Log panel * of Oddjob Explorer. * * @oddjob.example * * Copy the contents of a file to the logger. * * {@oddjob.xml.resource org/oddjob/logging/log4j/LogoutExample.xml} * */ public class LogoutType implements ValueFactory<OutputStream> { /** * @oddjob.property * @oddjob.description The Log4j logger name to log the output to. * @oddjob.required No. Defaults to org.oddjob.logging.log4j.LogoutType */ private String logger; /** * @oddjob.property * @oddjob.description The log log4j log level. * @oddjob.required No. Defaults to INFO. */ private String level; @Override public OutputStream toValue() throws ArooaConversionException { String logName = this.logger; if (logName == null) { logName = LogoutType.class.getName(); } Logger logger = Logger.getLogger(logName); Level level = Level.toLevel( this.level == null ? "INFO" : this.level); return new Log4jPrintStream(logger, level); } public String getLogger() { return logger; } public void setLogger(String logger) { this.logger = logger; } public String getLevel() { return level; } public void setLevel(String level) { this.level = level; } }