Thanks Cart for your reply.  But we need to stay with 0.9.7.  So I will have to get the logString from OStream *os variable only.

 

 

 

Regards

Prosenjit Sinha

Project Engineer

 

Plot No:2,MIDC,

Pune Infotech Park,

Hinjewadi,Pune-411057,India

Tel: 09325502750

"Simplicity is the ultimate sophistication."

 

 

Hi,

                I am facing a problem with the WriterAppender. I am developing a custom appender class derived from WriterAppender class.  I have initialized the custom appender class as follows:

 

                log4cxx::LayoutPtr layout(new log4cxx::PatternLayout(""));

       istringstream in_bis(ios_base:: in | ios_base::out |

                          ios_base::app );

       std::ostream *os = new std::ostream(in_bis.rdbuf());

       CCustomLogClass *my = new CCustomLogClass (layout,os);

 

CCustomLogClass has been derived from WriterAppender. Then I added this custom appender class to the root logger and called debug, info, error function with some log strings on root logger. I have set the immediateFlush variable of the custom appender class as FALSE.

 

To extract the logging information in my custom appender class I have written the following code:

 

       std::string str(10u,' ');

       std::stringbuf *pStream = new std::stringbuf;

       os->rdbuf(pStream);

       pStream->str(str);

 

I tried to get the logging string from str.c_str() function. But this function was always returning NULL. Can anybody tell what else need to be done to extract logging string or I am doing something wrong here.

 

 

 

 

-----Original Message-----
From: Curt Arnold [mailto:[EMAIL PROTECTED]
Sent: 2005
110 22:34
To: Log4CXX User
Subject: Re: Problem with WriterAppender

 

The implementation of WriterAppender is radically different in the CVS

and an appender written as you described will not be compatible with

the next development snapshot (the long awaited 0.9.8)

 

Unless you have a compelling reason to stay with 0.9.7, I would

strongly suggest that you write your custom appender against the CVS. 

In the CVS, all that would be necessary is to overload the appropriate

subAppend method.  The appropriate method would depend on where you

would like to intercept the rendering, for example, would you like the

message as an LogString or as a byte array in the specified encoding.



Confidentiality Notice

The information contained in this electronic message and any attachments to this message are intended
for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
you are not the intended recipient, please notify the sender at Wipro or [EMAIL PROTECTED] immediately
and destroy all copies of this message and any attachments.

Reply via email to