You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by Jeremias Maerki <je...@outline.ch> on 2002/01/11 09:35:38 UTC
Re: [repost] Configuring LogKit for ExcaliburComponentManager ?
Hi Vincent
I do it this way (and I am really happy with it):
org.apache.log.Logger rootLogger =
org.apache.log.Hierarchy.getDefaultHierarchy().getLoggerFor("MyApp");
MyApp main = new MyApp(args[0]);
main.setLogger(rootLogger);
main.initialize();
(later...)
DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
Configuration cfg = cfgBuilder.buildFromFile(cfgFile);
getLogger().setPriority(org.apache.log.Priority.getPriorityForName(cfg.getAttribute("log", "INFO")));
//Log Manager
this.logmanager = new DefaultLogKitManager();
setupLogger(logmanager, "logmanager");
((Configurable)logmanager).configure(cfg.getChild("logkit"));
//Configuration
this.manager = new ExcaliburComponentManager();
this.manager.setLogger(logmanager.getLogger("environment"));
this.manager.setLogKitManager(logmanager);
this.manager.configure(cfg.getChild("environment"));
this.manager.initialize();
The config file looks approximately like this:
<config log="INFO">
<logkit>
<factories>
<factory type="stream" class="org.apache.avalon.excalibur.logger.factory.StreamTargetFactory"/>
<factory type="file" class="org.apache.avalon.excalibur.logger.factory.FileTargetFactory"/>
<factory type="priority-filter" class="org.apache.avalon.excalibur.logger.factory.PriorityFilterTargetFactory"/>
</factories>
<targets>
<stream id="console">
<stream>System.out</stream>
<format type="avalon">%19.19{time:yyyy-MM-dd'T'HH:mm:ss.SSS} %5.5{priority}[%-15.15{category}]: %{message}\n%{throwable}</format>
</stream>
</targets>
<categories>
<category name="environment" log-level="INFO">
<log-target id-ref="console"/>
</category>
<category name="XML" log-level="DEBUG">
<log-target id-ref="console"/>
<category name="XPath" log-level="DEBUG">
<log-target id-ref="console"/>
</category>
</category>
</categories>
</logkit>
<components>
<component role="com.outline.util.vfs.VFSManager" class="com.outline.util.vfs.DefaultVFSManager">
<vfs name="test" class="com.outline.util.vfs.os.OSFileSystem">
<root>../../test</root>
</vfs>
</component>
<component role="com.outline.outputcenter.util.JNDIProviderSelector" class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector">
<component-instance name="default" class="com.outline.outputcenter.util.DefaultJNDIProvider" logger="JNDI"/>
<component-instance name="jboss" class="com.outline.outputcenter.util.DefaultJNDIProvider" logger="JNDI">
<java.naming.factory.initial>org.jnp.interfaces.NamingContextFactory</java.naming.factory.initial>
<java.naming.provider.url>localhost</java.naming.provider.url>
<java.naming.factory.url.pkgs>org.jboss.naming</java.naming.factory.url.pkgs>
</component-instance>
</component>
<!-- more config... -->
</components>
</config>
Of course, I also have the chicken/egg problem until the logmanager has
been started, but I can live with that since until this instant nothing
important happens anyway.
On Fri, 11 Jan 2002 08:17:58 -0000 Vincent Massol wrote:
> Hi,
>
> I'm using ExcaliburComponentManager to manage my components. It needs a
> LogKit logger to work. I am using something like :
>
> manager.setLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("systemCo
> nfig"));
>
> This works fine. However, the logs are printed on the console and I
> would like to know how to configure it with other
> appender/filters/format etc. I would like this configuration to be
> externalized in a configuration file (same a log4j.properties or
> log4j.xml one for Log4j).
>
> It is my understanding that logkit does not provide a configuration file
> abstraction, is that right ? It is also my understanding that there is
> an excalibur DefaultLogKitManager component that does this, is that
> correct ?
>
> Looking at the source code for DefaultLogKitManager, I can see that :
> * it is itself a component. So I'll have to manually initialize it as
> there is no component manager at this stage,
> * it itself needs a LogKit logger to work ... This is the chicken and
> egg problem.
>
> What is the recommended way to do this ? Can someone provide some
> pointers to me ?
>
> Thanks
> -Vincent
Cheers,
Jeremias Märki
mailto:jeremias.maerki@outline.ch
OUTLINE AG
Postfach 3954 - Rhynauerstr. 15 - CH-6002 Luzern
Fon +41 (41) 317 2020 - Fax +41 (41) 317 2029
Internet http://www.outline.ch
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
RE: [repost] Configuring LogKit for ExcaliburComponentManager ?
Posted by Vincent Massol <vm...@octo.com>.
Thanks Jeremias. I'll try what you suggest which looks fine.
Cheers,
-Vincent
> -----Original Message-----
> From: Jeremias Maerki [mailto:jeremias.maerki@outline.ch]
> Sent: 11 January 2002 08:36
> To: Avalon Developers List
> Subject: Re: [repost] Configuring LogKit for ExcaliburComponentManager
?
>
> Hi Vincent
>
> I do it this way (and I am really happy with it):
>
> org.apache.log.Logger rootLogger =
>
> org.apache.log.Hierarchy.getDefaultHierarchy().getLoggerFor("MyApp");
>
> MyApp main = new MyApp(args[0]);
> main.setLogger(rootLogger);
> main.initialize();
>
> (later...)
>
> DefaultConfigurationBuilder cfgBuilder = new
> DefaultConfigurationBuilder();
> Configuration cfg = cfgBuilder.buildFromFile(cfgFile);
>
>
getLogger().setPriority(org.apache.log.Priority.getPriorityForName(cfg.g
et
> Attribute("log", "INFO")));
>
> //Log Manager
> this.logmanager = new DefaultLogKitManager();
> setupLogger(logmanager, "logmanager");
> ((Configurable)logmanager).configure(cfg.getChild("logkit"));
>
> //Configuration
> this.manager = new ExcaliburComponentManager();
> this.manager.setLogger(logmanager.getLogger("environment"));
> this.manager.setLogKitManager(logmanager);
> this.manager.configure(cfg.getChild("environment"));
> this.manager.initialize();
>
> The config file looks approximately like this:
> <config log="INFO">
> <logkit>
> <factories>
> <factory type="stream"
>
class="org.apache.avalon.excalibur.logger.factory.StreamTargetFactory"/>
> <factory type="file"
> class="org.apache.avalon.excalibur.logger.factory.FileTargetFactory"/>
> <factory type="priority-filter"
>
class="org.apache.avalon.excalibur.logger.factory.PriorityFilterTargetFa
ct
> ory"/>
> </factories>
> <targets>
> <stream id="console">
> <stream>System.out</stream>
> <format type="avalon">%19.19{time:yyyy-MM-
> dd'T'HH:mm:ss.SSS} %5.5{priority}[%-15.15{category}]:
> %{message}\n%{throwable}</format>
> </stream>
> </targets>
> <categories>
> <category name="environment" log-level="INFO">
> <log-target id-ref="console"/>
> </category>
> <category name="XML" log-level="DEBUG">
> <log-target id-ref="console"/>
> <category name="XPath" log-level="DEBUG">
> <log-target id-ref="console"/>
> </category>
> </category>
> </categories>
> </logkit>
> <components>
> <component role="com.outline.util.vfs.VFSManager"
> class="com.outline.util.vfs.DefaultVFSManager">
> <vfs name="test"
class="com.outline.util.vfs.os.OSFileSystem">
> <root>../../test</root>
> </vfs>
> </component>
> <component
> role="com.outline.outputcenter.util.JNDIProviderSelector"
>
class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"
>
> <component-instance name="default"
> class="com.outline.outputcenter.util.DefaultJNDIProvider"
logger="JNDI"/>
> <component-instance name="jboss"
> class="com.outline.outputcenter.util.DefaultJNDIProvider"
logger="JNDI">
>
>
<java.naming.factory.initial>org.jnp.interfaces.NamingContextFactory</ja
va
> .naming.factory.initial>
>
> <java.naming.provider.url>localhost</java.naming.provider.url>
>
>
<java.naming.factory.url.pkgs>org.jboss.naming</java.naming.factory.url.
pk
> gs>
> </component-instance>
> </component>
> <!-- more config... -->
> </components>
> </config>
>
> Of course, I also have the chicken/egg problem until the logmanager
has
> been started, but I can live with that since until this instant
nothing
> important happens anyway.
>
>
> On Fri, 11 Jan 2002 08:17:58 -0000 Vincent Massol wrote:
> > Hi,
> >
> > I'm using ExcaliburComponentManager to manage my components. It
needs a
> > LogKit logger to work. I am using something like :
> >
> >
manager.setLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("systemCo
> > nfig"));
> >
> > This works fine. However, the logs are printed on the console and I
> > would like to know how to configure it with other
> > appender/filters/format etc. I would like this configuration to be
> > externalized in a configuration file (same a log4j.properties or
> > log4j.xml one for Log4j).
> >
> > It is my understanding that logkit does not provide a configuration
file
> > abstraction, is that right ? It is also my understanding that there
is
> > an excalibur DefaultLogKitManager component that does this, is that
> > correct ?
> >
> > Looking at the source code for DefaultLogKitManager, I can see that
:
> > * it is itself a component. So I'll have to manually initialize it
as
> > there is no component manager at this stage,
> > * it itself needs a LogKit logger to work ... This is the chicken
and
> > egg problem.
> >
> > What is the recommended way to do this ? Can someone provide some
> > pointers to me ?
> >
> > Thanks
> > -Vincent
>
> Cheers,
> Jeremias Märki
>
> mailto:jeremias.maerki@outline.ch
>
> OUTLINE AG
> Postfach 3954 - Rhynauerstr. 15 - CH-6002 Luzern
> Fon +41 (41) 317 2020 - Fax +41 (41) 317 2029
> Internet http://www.outline.ch
>
>
> --
> To unsubscribe, e-mail: <mailto:avalon-dev-
> unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:avalon-dev-
> help@jakarta.apache.org>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>