Log4jRollingFileAppenderPrintStreamProducer.java

package org.ferris.riviera.console.log4j;

import java.io.OutputStream;
import java.util.Enumeration;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import org.apache.log4j.Logger;

/**
 *
 * @author Michael Remijan mjremijan@yahoo.com @mjremijan
 */
public class Log4jRollingFileAppenderPrintStreamProducer {

    @Inject
    protected Logger log;

    @Produces
    protected Log4jRollingFileAppenderPrintStream getPrintStream() {
        OutputStream os = System.out;
        Enumeration enu = log.getAllAppenders();
        while (enu.hasMoreElements()) {
            Object o = enu.nextElement();
            if (o instanceof Log4jRollingFileAppender) {
                os = ((Log4jRollingFileAppender) o).getPrintStream();
            }
        }
        return new Log4jRollingFileAppenderPrintStream(os);
    }
}