[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [xmlblaster-devel] Redirect LogChannel for log4j
Hi Marcel,
I saw, that the changes are not so easy, because not all possible
LogChannels
are known within the Global Object in the moment, I want
to initialize my logging. They are inserted dynamically when
they are used.
So I did not make any changes within the famous xmlBlaster and
initializes
my logging in the following way (this is not a good solution, but it
considers
all known log ids, more I do not need):
/**
* add 'this' to all known LogChannels
* so this.log() will be triggerd for all xmlBlaster specific logs.
* So we have a chance, to log xmlBlaster stuff into our logfile.
*/
private void initXmlBlasterLogging()
{
if (xmlBlasterLoggingInitialized)
return;
xmlBlasterLoggingInitialized = true;
glob.getLog("core").addLogDevice(this);
glob.getLog("auth").addLogDevice(this);
glob.getLog("cb").addLogDevice(this);
glob.getLog("mime").addLogDevice(this);
glob.getLog("corba").addLogDevice(this);
glob.getLog("xmlrpc").addLogDevice(this);
glob.getLog("admin").addLogDevice(this);
}
Uwe
Marcel wrote
>
> Bom diaz Uwe,
>
> >Hi xmlBlaster Developer,
> >
> >I am developing a application that uses Log4J.
> >The xmlBlaster client classes are used in this project.
> >
> >Now xml Blaster has its own logging. I would like, that the xmlblaster
> >loggings would appear in my log4j files.
> >The xmlBlaster (jutils) LogChannel has a super feature. I can define a
> >
> Honour to Juergen Birkle ...
>
> >callback Interface, so all log calls can be caught and manipulated, e.g.
> >like this:
> >
> >public class c implements org.jutils.log.LogableDevice {
> > /**
> > * Event fired by LogChannel.java through interface LogableDevice.
> > * <p />
> > * Log output into our Category <br />
> > */
> > public void log(int level, String source, String str)
> > {
> > final Category log =
> >org.apache.log4j.Category.getInstance("org.xmlblaster");
> >
> > StringBuffer logTxt = new StringBuffer();
> > logTxt.append("[");
> > logTxt.append(source);
> > logTxt.append("] ");
> > logTxt.append(str);
> > switch (level) {
> > case LogChannel.LOG_CALL:
> > case LogChannel.LOG_DUMP:
> > case LogChannel.LOG_TIME:
> > case LogChannel.LOG_TRACE:
> > if (log.isDebugEnabled())
> > log.debug(logTxt);
> > break;
> > case LogChannel.LOG_ERROR:
> > log.error(logTxt);
> > break;
> > case LogChannel.LOG_INFO:
> > log.info(logTxt);
> > break;
> > case LogChannel.LOG_WARN:
> > log.warn(logTxt);
> > break;
> > default:
> > log.info(logTxt);
> > break;
> > };
> > }
> >}
> >
> Cool!
>
> >
> >Now I have a problem with initializing. I have to get all LogChannels,
> >that are used by Global, without knowing the ids.
> >But there exists no appropriate method.
> >If I would have it, e.g. Enumeration Global.getLogs(), I could
> >initialize all Channels by adding my Interceptor.
> >
> >Perhaps you can add it.
> >
> Please just add it yourself and commit it to xmlBlaster.org
>
> thanks,
>
> Marcel
>
> >
> >Thank you and many greetings
> >
> >Uwe
> >
> >
> >
> >