spring mvc - Direct BIRT Report logs to log4j -
i have spring mvc 3.0 webapp , am trying follow instructions @ http://wiki.eclipse.org/birt/faq/deployment#logging redirect birt study logs log4j having troubles understanding how it.
step 1 create class fine.
step 2 create configuration file "logging.properties" , specify above handler handers: handlers=test.log4jhandler
what should content of logging.properties? illustration great.
step 3 don't understand either. assume means set file in classpath... how set position scheme property?
if can help illustration great.
thanks
in our application (not using spring), this:
content of file c:\reporting\conf\birt\birt-log4j.properties:
log4j.rootcategory=info, file # set debug see lot more messages birt log4j.logger.org.eclipse=info, engine log4j.additivity.org.eclipse=false log4j.logger.org.eclipse.birt=info, engine log4j.additivity.org.eclipse.birt=false log4j.logger.org.eclipse.birt.data=warn, engine log4j.additivity.org.eclipse.birt.data log4j.appender.file=org.apache.log4j.rollingfileappender log4j.appender.file.file=c:/reporting/log/birt/birt.log log4j.appender.file.maxfilesize=5000kb log4j.appender.file.maxbackupindex=10 log4j.appender.file.layout=org.apache.log4j.patternlayout log4j.appender.file.layout.conversionpattern=[%d{iso8601}] %-5p [%t] j:%x{jobid} - (%f:%l) - %m%n log4j.appender.engine=org.apache.log4j.rollingfileappender log4j.appender.engine.file=c:/reporting/log/birt/engine.log log4j.appender.engine.maxfilesize=2000kb log4j.appender.engine.maxbackupindex=10 log4j.appender.engine.layout=org.apache.log4j.patternlayout log4j.appender.engine.layout.conversionpattern=[%d{iso8601}] %-5p [%t] j:%x{jobid} - %c - %m%n and when starting application, set systemproperty this:
-dlog4j.configuration=file:///c:/reporting/conf/birt/birt-log4j.properties and within application, using org.yajul.log.julitolog4jservice (see http://yajul.sourceforge.net/) , set this:
private julitolog4jservice loghelper; /** * initialize birt , logging libraries. * * @throws exception */ private void initlogging() throws exception { loghelper = new julitolog4jservice(); loghelper.start(); } private void initbirt() throws configurationerror { string birtfontdirs = system.getproperty("birt.font.dirs"); fontpath = birtfontdirs.split(file.pathseparator); // check study directory exists file f = new file(reportdir); boolean dirok = false; dirok = (f.isdirectory()); if (!dirok) { log.fatal("specified study directory " + string.valueof(reportdir) + " not directory or not accessible!"); throw new configurationerror("invalid study directory " + string.valueof(reportdir)); } log.info("creating birt engineconfig..."); engineconfig = new engineconfig(); engineconfig.setlogger(java.util.logging.logger .getlogger("org.eclipse.birtengine")); dburl = system.getproperty("lisa.birt.db.url"); log.info("db url=" + dburl); seek { log.info("platform startup..."); platform.startup(engineconfig); log.info("creating study engine factory..."); mill = (ireportenginefactory) platform .createfactoryobject(ireportenginefactory.extension_report_engine_factory); log.info("creating study engine..."); engine = factory.createreportengine(engineconfig); engine.setlogger(engineconfig.getlogger()); // reportengine.changeloglevel(level.parse(loglevel)); } grab (exception e) { log.fatal("error during birt startup!", e); throw new configurationerror("error during birt platform startup"); } log.info("birt enginemanager initialization completed."); } /** * shut downwards engine manager. before destroying birt study engine, * interrupt generator threads. */ public void shutdownbirt() { // interrupt still running threads log.info("shutting downwards birt engine..."); // destroy engine if (engine != null) { seek { log.info("destroying birt reportengine..."); engine.destroy(); engine = null; } grab (exception e) { log.warn("error calling reportengine.destroy:", e); } } // shut downwards birt osgi platform seek { log.info("shutting downwards birt osgi platform..."); platform.shutdown(); // fimxe seems hang. } grab (exception e) { log.warn("error calling platform.shutdown:", e); } log.info("birt enginemanager shutdown completed."); } /** * uninitialize birt , logging libraries. */ private void uninitialize() { shutdownbirt(); seek { loghelper.stop(); } grab (throwable t) { seek { t.printstacktrace(system.err); } grab (throwable t1) { ; // ignore if cannot log error } } } as nice side-effect, can utilize mdc log4j. e.g. our application using birt multi-threaded, , log4j can automatically add together meaningful identifier thread log line.
for ide, aren't using log4j. in order direct birt's log messages not-so-deeply-nested log file, start ide (in windows):
start /d%~dp0birt %birt_exe% -clean -vmargs -djava.util.logging.config.file=%~dp0logging.properties with file logging.properties this:
handlers= java.util.logging.filehandler .level= info org.eclipse.birt.report.data.oda.jdbc.level = fine java.util.logging.filehandler.pattern = ../log/birt-designer.log java.util.logging.filehandler.limit = 5000000 java.util.logging.filehandler.count = 1 #java.util.logging.filehandler.formatter = java.util.logging.xmlformatter java.util.logging.filehandler.formatter = java.util.logging.simpleformatter java.util.logging.filehandler.level = spring-mvc log4j birt
No comments:
Post a Comment