Bug 165188 logging per report
Setting up a dedicated (birt) report server, which serves all our web apps, leads to a logging desaster. Birtegine logs all messages to one file. There's no info which rptdesign caused the logmessage or who (e.g. user) caused the logmessage. Retrieving who/which rpt caused some logmessage is not possible! There are two possible solutions: (a) prefixing each logmessage with a userdefineable message (task.setLogprefix("myprefix")) (b) set an outputstream for each task (task.setLoggingOutputStream(outputstream)) to split the huge logfile to many small pieces.
engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/api/impl/ReportEngine.java
import org.eclipse.birt.report.engine.api.EmitterInfo;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IDataExtractionTask;
import org.eclipse.birt.report.engine.api.IGetParameterDefinitionTask;
import org.eclipse.birt.report.engine.api.IRenderTask;
import org.eclipse.birt.report.engine.api.IReportDocument;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.IRunTask;
import org.eclipse.birt.report.engine.api.IStatusHandler;
import org.eclipse.birt.report.model.api.IResourceLocator;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ScriptableObject;
/**
 * A report engine provides an entry point for reporting functionalities. It is
 * where the report generation and rendering process are globally customized. It
 * is also the place where engine statistics are collected. Through report
 * engine, reports can be generated and rendered to different output formats.
 * Queries can also be executed for preview purpose without involving a full
 * report generation.
 * <p>
 * Engine supports running different types of tasks. Example tasks include
 * running a report design to generate a report instance file, rendering a
 * report instance to output format, running a report directly to output,
 * running a dataset for preview, seaching a report, etc.
 */
public class ReportEngine implements IReportEngine