How about writing a custom appender (or derive from SocketAppender - it
would be almost identical) that serializes the logged Object rather than
rendering it?

Anders


Timothy Mulle' wrote:
> 
> True, however since we will be primarily logging to a remote log4j server
> and we need to send about 15 fields of data and save each field in a
> database table, it would be ideal to send a HashMap or something filled with
> these fields. Other wise it gets ugly having to create a method in an
> extended Category class like Cat.info(field1, field2, field3, field4,
> field5, etc..) to log all 15 fields everytime they need to log. I've already
> thought about the ObjectRenderers, but because we are logging remotely, i'd
> lose the structure of the object due to the actual message object stored in
> the LoggingEvent not being serialized.
> 
> I guess the only way I can see doing what I want is to do it the ugly way
> and extend the Category class, create a new event object, and place all the
> fields in that event object one by one.
> 
> For example I wanted to do the following:
> 
>         // Client side
>         Map headers = new HashMap();
>         headers.put("servername", name);
>         headers.put("date", date);
>         headers.put("referrer", ref);
>         headers.put("message", "Page Hit Occurred");
>         etc...
> 
>         Category cat = Category.getInstance("pagehit");
>         cat.info(headers); <== Sends the object over the wire as a seriablized map
> 
>         // Server Side (remote)
>         Would receive the logging Event from the wire, deserialize it, and pull the
> fields out and use the JDBCAppender to put the fields
>         into the database one by one.
> 
> - Tim
> 
> -----Original Message-----
> From: Sam Newman [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, July 26, 2001 4:15 AM
> To: LOG4J Users Mailing List
> Subject: Re: Design: How to do the following with Log4j
> 
> Surely though you are only sending the string representation if you actually
> make your message a string? You can send any object you like as the message,
> e.g. cat.warn(new Integer()) or whatever. You then use the ObjectRenderers
> to convert this to a string representation. I could easily see you sending
> your own object and writing a renderer to convert this to a string....
> 
> sam
> ----- Original Message -----
> From: <[EMAIL PROTECTED]>
> To: "LOG4J Users Mailing List" <[EMAIL PROTECTED]>
> Sent: Wednesday, July 25, 2001 9:22 PM
> Subject: RE: Design: How to do the following with Log4j
> 
> >
> > Yes I have looked into those..however, it appears that when I want to log
> > to a remote server, I will be sending the string representation down the
> > wire, which I'd have to then parse into an object on the log server so I
> > can access the individual fields. It would be much more useful to send the
> > object down the wire so we can then work on the message object whether it
> > was local or remote.
> >
> > - Tim
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

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

Reply via email to