You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by Reg Sherwood <rs...@imagictv.com> on 2002/07/12 23:53:36 UTC

Testing log4j - not assignable to a "org.apache.log4j.Appender" variable error

Hi,

I am currently using log4j 1.2.4, but I had to create a facade over the logging package so as to avoid direct imports in the application.  Also, this facade implements certain business rules that I require.  Everything from that point of view works, but now I need to write my junit test cases to test my facade.  Now the problem arises... In order to test the facade I need to have logging enabled (as nothing gets returned from the logging facade), so I created a simple SocketAppender and send all my messages to that.  I have also created 2 additional pieces to help me test, these are:

A basic receiver type class, that will connect to the socket and accept messages.  These LoggingEvent messages are then fed into a simple model.  This model class is shared by both the receiver class and my actual junit test class.  So, in the execution of a given test the following scenario is setup:

I use the following appender, configured via the PropertyConfiguration:
log4j.rootLogger=,A2
log4j.appender.A2=org.apache.log4j.net.SocketAppender
log4j.appender.A2.Port=8890
log4j.appender.A2.RemoteHost=localhost
log4j.appender.A2.LocationInfo=true

* this is a very cut down version, but should be enuf to get the point across *

setup()
{
    m = new FooModel();
    FooReceiver r = new FooReceiver( m );
    // setups up my logging package based on the PropertyConfiguration.  
    // See configuration above    
}


// pseudo code - but it should get the message across.
testFoo()
{
        log.message( "some message goes here" );       
        assert( m.getMessage( 0 ).equals( "some message goes here" ) );
        model.clear();
}

Basically, I am sending a message through my facade into the log4j package. And will test the LoggingEvent and do something appropriate.  And, since I have configured the log4j package to use a socket appender, that message should get sent to the socket.  I did have this working, but I now receive the following for any appender I configure..  I get the same message now for ANY appender I try to setup.

log4j:ERROR Could not instantiate appender named "A2".
log4j:ERROR A "org.apache.log4j.net.SocketAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR Could not instantiate appender named "A2".
log4j: Parsing for [root] with value=[,A2].
log4j: Parsing appender named "A2".
log4j: Finished configuring.
log4j:ERROR A "org.apache.log4j.net.SocketAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
log4j:ERROR Could not instantiate appender named "A2".

Any thoughts,

Thanks

-Reg


Re: Testing log4j - not assignable to a "org.apache.log4j.Appender" variable error

Posted by Ceki Gülcü <ce...@qos.ch>.
Hi,


The root cause of this problem, that is the [object is not assignable
to a "org.apache.log4j.Appender"] complaint, stems from having two
copies of log4j classes available to your application. Simply ensure
that only one copy of log4j-x.x.jar is available and the problem will
go away.

At 18:53 12.07.2002 -0300, Reg Sherwood wrote:
>Hi,
>
>log4j:ERROR Could not instantiate appender named "A2".
>log4j:ERROR A "org.apache.log4j.net.SocketAppender" object is not 
>assignable to a "org.apache.log4j.Appender" variable.
>log4j:ERROR Could not instantiate appender named "A2".
>log4j: Parsing for [root] with value=[,A2].
>log4j: Parsing appender named "A2".
>log4j: Finished configuring.
>log4j:ERROR A "org.apache.log4j.net.SocketAppender" object is not 
>assignable to a "org.apache.log4j.Appender" variable.
>log4j:ERROR Could not instantiate appender named "A2".
>
>Any thoughts,
>
>Thanks
>
>-Reg

--
Ceki


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>