You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-user@logging.apache.org by ss ak <ss...@gmail.com> on 2009/08/11 21:12:29 UTC

Fwd: logString issue...please help

string logfile = "logfile1.log";
printf("\n in main () ");

log4cxx::FileAppenderPtr fileAppender =  new
log4cxx::FileAppender(log4cxx::LayoutPtr(new
log4cxx::SimpleLayout()),log4cxx::helpers::Transcoder::decode(logfile.c_str()),false);

log4cxx::helpers::Pool p;
fileAppender->activateOptions(p);

printf("\n second printf");
log4cxx::BasicConfigurator::configure();
 //configure(log4cxx::AppenderPtr(fileAppender));
log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("logger");
logger->setLevel(log4cxx::Level::getAll());
logger->addAppender(fileAppender);
LOG4CXX_INFO(logger,"IN main method");

Now the file is created but does not write anything into it....
or does not print "second printf"
the program just aborts,after creating the file...

please help..i need this to be done today........thanks....
---------- Forwarded message ----------
From: ss ak <ss...@gmail.com>
Date: Tue, Aug 11, 2009 at 9:43 AM
Subject: logString issue...please help
To: log4cxx-user@logging.apache.org


string logfile = "logfile.log";
log4cxx::helpers::Transcoder::decode("logfile.log",12,logstr);
 log4cxx::BasicConfigurator::configure();
log4cxx::FileAppenderPtr fileAppender(new log4cxx::FileAppender());
//log4cxx::Layout(new log4cxx::SimpleLayout())));
fileAppender->setAppend(true);
fileAppender->setFile(logfile.c_str());
logger->setLevel(log4cxx::Level::getAll());
logger->addAppender(fileAppender);

I get this error...please help


error C2664: 'void log4cxx::FileAppender::setFile(const log4cxx::LogString
&)' : cannot convert parameter 1 from 'const char *' to 'const
log4cxx::LogString &'

1> Reason: cannot convert from 'const char *' to 'const log4cxx::LogString'

1> No constructor could take the source type, or constructor overload
resolution was ambiguous

1

Re: logString issue...please help

Posted by ss ak <ss...@gmail.com>.
I changed as said...but still have the same problem..it creates a logfile
but no messages in the file...

log4cxx::FileAppenderPtr fileAppender(new
log4cxx::FileAppender(log4cxx::LayoutPtr(new
log4cxx::SimpleLayout()),log4cxx::helpers::Transcoder::decode(logfile.c_str()),false));
 log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("logger");
 log4cxx::BasicConfigurator::configure();


 logger->setLevel(log4cxx::Level::getAll());
 logger->addAppender(fileAppender);
 logger->info("APPS INITIALIZED");
 LOG4CXX_INFO(logger,"IN main method");
 logger->trace("tracing");
 fileAppender->close();
 printf("\n file name : %s","got here");

am i missing something...please let me know...

thanks in advance

On Tue, Aug 11, 2009 at 8:00 PM, Curt Arnold <ca...@apache.org> wrote:

>
> On Aug 11, 2009, at 2:12 PM, ss ak wrote:
>
> string logfile = "logfile1.log";
>> printf("\n in main () ");
>>
>> log4cxx::FileAppenderPtr fileAppender =  new
>> log4cxx::FileAppender(log4cxx::LayoutPtr(new
>> log4cxx::SimpleLayout()),log4cxx::helpers::Transcoder::decode(logfile.c_str()),false);
>>
>> log4cxx::helpers::Pool p;
>> fileAppender->activateOptions(p);
>>
>> printf(
>>
>> "\n second printf");
>> log4cxx::BasicConfigurator::configure();
>>  //configure(log4cxx::AppenderPtr(fileAppender));
>> log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("logger");
>> logger->setLevel(log4cxx::Level::getAll());
>> logger->addAppender(fileAppender);
>> LOG4CXX_INFO(logger,"IN main method");
>>
>> Now the file is created but does not write anything into it....
>> or does not print "second printf"
>> the program just aborts,after creating the file...
>>
>> please help..i need this to be done today........thanks....
>>
>
>
> You don't mention the platform, guessing Windows.  There is the possibility
> of shutting down Apache Portable Runtime before shutting down log4cxx if the
> first thing you do is to create a Ptr without initializing it.  I wanted to
> avoid the cost of checking for APR startup in every Ptr constructor, but it
> seems like this hits a lot of people.  Probably should go ahead and change
> that and take any performance hit.
>
> The main thing is to do:
>
> FileAppenderPtr fileAppender(new FileAppender...)
>
> instead of
>
> FileAppenderPtr fileAppender = new Appender...
>
> The first constructs the FileAppender first then initializes the pointer.
>  The other constructs the pointer first then the FileAppender.  Since
> destruction happens in reverse order of construction, you want to construct
> the FileAppender first.
>
>
>
>
>
> ---------- Forwarded message ----------
>> From: ss ak <ss...@gmail.com>
>> Date: Tue, Aug 11, 2009 at 9:43 AM
>> Subject: logString issue...please help
>> To: log4cxx-user@logging.apache.org
>>
>>
>> string logfile = "logfile.log";
>> log4cxx::helpers::Transcoder::decode("logfile.log",12,logstr);
>>  log4cxx::BasicConfigurator::configure();
>> log4cxx::FileAppenderPtr fileAppender(new log4cxx::FileAppender());
>> //log4cxx::Layout(new log4cxx::SimpleLayout())));
>>
>> fileAppender->setAppend(true);
>> fileAppender->setFile(logfile.c_str());
>> logger->setLevel(log4cxx::Level::getAll());
>> logger->addAppender(fileAppender);
>>
>> I get this error...please help
>>
>> error C2664: 'void log4cxx::FileAppender::setFile(const log4cxx::LogString
>> &)' : cannot convert parameter 1 from 'const char *' to 'const
>> log4cxx::LogString &'
>>
>> 1> Reason: cannot convert from 'const char *' to 'const
>> log4cxx::LogString'
>>
>> 1> No constructor could take the source type, or constructor overload
>> resolution was ambiguous
>>
>> 1
>>
>>
>>
>
> string logfile = "logfile.log";
>> log4cxx::helpers::Transcoder::decode("logfile.log",12,logstr);
>>  log4cxx::BasicConfigurator::configure();
>> log4cxx::FileAppenderPtr fileAppender(new log4cxx::FileAppender());
>> //log4cxx::Layout(new log4cxx::SimpleLayout())));
>>
>> fileAppender->setAppend(true);
>> fileAppender->setFile(logfile.c_str());
>> logger->setLevel(log4cxx::Level::getAll());
>> logger->addAppender(fileAppender);
>>
>
>
> If all you wanted to do is explicitly set the file name, you should have
> done:
>
> fileAppender->setFile(LOG4CXX_STR("logfile.log"));
>
> As long as the constant only contains ASCII characters it will use either
> the proper type of literal or do a transcoding.
>
>
>
>
>

Re: logString issue...please help

Posted by Curt Arnold <ca...@apache.org>.
On Aug 11, 2009, at 2:12 PM, ss ak wrote:

> string logfile = "logfile1.log";
> printf("\n in main () ");
>
> log4cxx::FileAppenderPtr fileAppender =  new  
> log4cxx::FileAppender(log4cxx::LayoutPtr(new  
> log4cxx 
> ::SimpleLayout 
> ()),log4cxx::helpers::Transcoder::decode(logfile.c_str()),false);
>
> log4cxx::helpers::Pool p;
> fileAppender->activateOptions(p);
>
> printf(
>
> "\n second printf");
> log4cxx::BasicConfigurator::configure();
>  //configure(log4cxx::AppenderPtr(fileAppender));
> log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("logger");
> logger->setLevel(log4cxx::Level::getAll());
> logger->addAppender(fileAppender);
> LOG4CXX_INFO(logger,"IN main method");
>
> Now the file is created but does not write anything into it....
> or does not print "second printf"
> the program just aborts,after creating the file...
>
> please help..i need this to be done today........thanks....


You don't mention the platform, guessing Windows.  There is the  
possibility of shutting down Apache Portable Runtime before shutting  
down log4cxx if the first thing you do is to create a Ptr without  
initializing it.  I wanted to avoid the cost of checking for APR  
startup in every Ptr constructor, but it seems like this hits a lot of  
people.  Probably should go ahead and change that and take any  
performance hit.

The main thing is to do:

FileAppenderPtr fileAppender(new FileAppender...)

instead of

FileAppenderPtr fileAppender = new Appender...

The first constructs the FileAppender first then initializes the  
pointer.  The other constructs the pointer first then the  
FileAppender.  Since destruction happens in reverse order of  
construction, you want to construct the FileAppender first.




> ---------- Forwarded message ----------
> From: ss ak <ss...@gmail.com>
> Date: Tue, Aug 11, 2009 at 9:43 AM
> Subject: logString issue...please help
> To: log4cxx-user@logging.apache.org
>
>
> string logfile = "logfile.log";
> log4cxx::helpers::Transcoder::decode("logfile.log",12,logstr);
>  log4cxx::BasicConfigurator::configure();
> log4cxx::FileAppenderPtr fileAppender(new log4cxx::FileAppender());
> //log4cxx::Layout(new log4cxx::SimpleLayout())));
>
> fileAppender->setAppend(true);
> fileAppender->setFile(logfile.c_str());
> logger->setLevel(log4cxx::Level::getAll());
> logger->addAppender(fileAppender);
>
> I get this error...please help
>
> error C2664: 'void log4cxx::FileAppender::setFile(const  
> log4cxx::LogString &)' : cannot convert parameter 1 from 'const char  
> *' to 'const log4cxx::LogString &'
>
> 1> Reason: cannot convert from 'const char *' to 'const  
> log4cxx::LogString'
>
> 1> No constructor could take the source type, or constructor  
> overload resolution was ambiguous
>
> 1
>
>


> string logfile = "logfile.log";
> log4cxx::helpers::Transcoder::decode("logfile.log",12,logstr);
>  log4cxx::BasicConfigurator::configure();
> log4cxx::FileAppenderPtr fileAppender(new log4cxx::FileAppender());
> //log4cxx::Layout(new log4cxx::SimpleLayout())));
>
> fileAppender->setAppend(true);
> fileAppender->setFile(logfile.c_str());
> logger->setLevel(log4cxx::Level::getAll());
> logger->addAppender(fileAppender);


If all you wanted to do is explicitly set the file name, you should  
have done:

fileAppender->setFile(LOG4CXX_STR("logfile.log"));

As long as the constant only contains ASCII characters it will use  
either the proper type of literal or do a transcoding.





Fwd: logString issue...please help

Posted by ss ak <ss...@gmail.com>.
string logfile = "logfile1.log";
printf("\n in main () ");

log4cxx::FileAppenderPtr fileAppender =  new
log4cxx::FileAppender(log4cxx::LayoutPtr(new
log4cxx::SimpleLayout()),log4cxx::helpers::Transcoder::decode(logfile.c_str()),false);

log4cxx::helpers::Pool p;
fileAppender->activateOptions(p);

printf(
"\n second printf");
log4cxx::BasicConfigurator::configure();
 //configure(log4cxx::AppenderPtr(fileAppender));
log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("logger");
 logger->setLevel(log4cxx::Level::getAll());
logger->addAppender(fileAppender);
LOG4CXX_INFO(logger,"IN main method");

Now the file is created but does not write anything into it....
or does not print "second printf"
the program just aborts,after creating the file...

please help..i need this to be done today........thanks....
  ---------- Forwarded message ----------
From: ss ak <ss...@gmail.com>
Date: Tue, Aug 11, 2009 at 9:43 AM
Subject: logString issue...please help
To: log4cxx-user@logging.apache.org


string logfile = "logfile.log";
log4cxx::helpers::Transcoder::decode("logfile.log",12,logstr);
 log4cxx::BasicConfigurator::configure();
log4cxx::FileAppenderPtr fileAppender(new log4cxx::FileAppender());
//log4cxx::Layout(new log4cxx::SimpleLayout())));
fileAppender->setAppend(true);
fileAppender->setFile(logfile.c_str());
logger->setLevel(log4cxx::Level::getAll());
logger->addAppender(fileAppender);

I get this error...please help


error C2664: 'void log4cxx::FileAppender::setFile(const log4cxx::LogString
&)' : cannot convert parameter 1 from 'const char *' to 'const
log4cxx::LogString &'

1> Reason: cannot convert from 'const char *' to 'const log4cxx::LogString'

1> No constructor could take the source type, or constructor overload
resolution was ambiguous

1