Thanks Jeremias. I'll try what you suggest which looks fine.
Cheers,
-Vincent

> -----Original Message-----
> From: Jeremias Maerki [mailto:[EMAIL PROTECTED]]
> 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:[EMAIL PROTECTED]
> 
> 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-
> [EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:avalon-dev-
> [EMAIL PROTECTED]>
> 




--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to