I have written an AsyncSocketAppender (but I don't have the code right
here).

It's really not hard to implement when you use the Java 5 Executor
framework.
But you have to decide what to do when the queue becomes too big.

One option is to discard messages (ThreadPoolExecutor.DiscardOldestPolicy)
another option is
to use a fallbackAppender : as long as the connection is broken you send all
events to a FileAppender.

My goal is to create a small open-source library with an AsyncSocketAppender
for both log4j and logback that uses a pluggable encoder (similar to a
Layout but for writing an event to an OutputStream instead of generating a
String)

And providing  a set of different encoders, eg using
(a) java serialization
(b) xml
(c) protobuf [1]
(d) Apache Thrift [2]

Of course with corresponding receivers and a nice GUI :-)

Alternative:
I haven't tried it myself but maybe you can wrap an SocketAppender in an
AsyncAppender [3] to achieve what you want.

[1] http://code.google.com/p/protobuf/
[2] http://incubator.apache.org/thrift/
[3]
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/AsyncAppender.html

Regards,
Maarten


On Wed, Jan 14, 2009 at 1:36 PM, <[email protected]> wrote:

> I guess you will be looking for
> http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/JMSAppender.html
>
>
>
> ________________________________
> From: Guilherme Costa <[email protected]>
> To: Log4J Users List <[email protected]>
> Sent: Wednesday, 14 January, 2009 12:11:15
> Subject: SocketAppender
>
> I saw the code for that appender (thanks Open Source) and I noticed that if
> the socket is not connected when a new message comes, the log message is
> lost.
> There are any appender out there that implements queue? We currently have a
> logging system, home made. Very simple, it only sends a string message, the
> application ID and the client IP address, but it has this queue to prevent
> losing any message. My boss, that is fighting against the log4j idea told
> me
> that if we don't have a queue, we will keep using the same old logging
> system (really old, maybe 6 years old!!).
>
> If there are no Appender that implements a queue, I will have to write one
> for out application.
>
>
> Thanks,
> Gui
>
>
>
>
>

Reply via email to