I have Avalon and Excalibur release 4.0 installed.
I am having some difficulty getting LogKitManager working.
First, it appears that the DefaultLogKitManager will throw a
NullPointerException if a logger is not set:
.java.lang.NullPointerException
at
org.apache.avalon.excalibur.logger.DefaultLogTargetFactoryManager.configure(Unknown
Source)
at
org.apache.avalon.excalibur.logger.DefaultLogKitManager.setupTargetFactoryManager(Unknown
Source)
at
org.apache.avalon.excalibur.logger.DefaultLogKitManager.configure(Unknown
Source)
at
com.comczar.component.container.ComponentContainer.initialize(ComponentContainer.java:44)
A "SetALoggerYouDummyException" or just gracefully dealing with this
would have been more straightfforward for me.
Now that I figured that out, on to the next exception. Here is my
intialize method for my container:
public void initialize() throws ConfigurationException {
DefaultConfigurationBuilder builder = new
DefaultConfigurationBuilder();
try {
Configuration systemconfig = builder.buildFromFile("myapp.xml");
Configuration roleconfig = builder.buildFromFile("myapp.roles");
Configuration logkitconfig = builder.buildFromFile("logkit.xml");
DefaultRoleManager roles = new DefaultRoleManager();
DefaultLogKitManager logkit = new DefaultLogKitManager();
logkit.setLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("logmanager"));
logkit.configure(logkitconfig);
roles.setLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("container.roles"));
roles.configure(roleconfig);
this.manager.setLogger(Hierarchy.getDefaultHierarchy().getLoggerFor("container"));
//this.manager.setLogger(logkit.getLogger("comczar"));
this.manager.contextualize(new DefaultContext());
this.manager.setLogKitManager(logkit);
this.manager.setRoleManager(roles);
this.manager.configure(systemconfig);
this.manager.initialize();
} catch (org.xml.sax.SAXException e) {
e.printStackTrace();
throw new ConfigurationException(e.getMessage());
} catch (IOException e) {
e.printStackTrace();
throw new ConfigurationException(e.getMessage());
}
}
And my logkit.xml file:
<?xml version="1.0"?>
<logkit>
<factories>
<factory type="file"
class="org.apache.avalon.excalibur.logger.factory.FileTargetFactory"/>
</factories>
<targets>
<file id="root">
<filename>mylogfile.log</filename>
<append>true</append>
</file>
</targets>
<categories>
<category name="root" log-level="DEBUG">
<log-target id-ref="root"/>
</category>
</categories>
</logkit>
And here's the output when I initialize my container:
.DEBUG 28 [containe] (main): added new LogTargetFactory of type
file
E
Time: 0.951
There was 1 error:
1)
testCastorComponent(com.comczar.component.container.TestComponentContainer)
java.lang.NoSuchMethodError: org.apache.log.format.PatternFormatter:
method <init>(Ljava/lang/String;)V not found
at
org.apache.avalon.excalibur.logger.factory.FileTargetFactory.getFormatter(Unknown
Source)
at
org.apache.avalon.excalibur.logger.factory.FileTargetFactory.createTarget(Unknown
Source)
at
org.apache.avalon.excalibur.logger.DefaultLogTargetManager.configure(Unknown
Source)
at
org.apache.avalon.excalibur.logger.DefaultLogKitManager.setupTargetManager(Unknown
Source)
at
org.apache.avalon.excalibur.logger.DefaultLogKitManager.configure(Unknown
Source)
at
com.comczar.component.container.ComponentContainer.initialize(ComponentContainer.java:44)
at
com.comczar.component.container.ComponentContainer.<init>(ComponentContainer.java:26)
at
com.comczar.component.container.ComponentContainer.getInstance(ComponentContainer.java:31)
at
com.comczar.component.container.TestComponentContainer.testCastorComponent(TestComponentContainer.java:25)
at
com.comczar.component.container.TestComponentContainer.main(TestComponentContainer.java:79)
Thanks in advance,
Kerry Todyruik
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>