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 <carn...@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 <ssa...@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.
>
>
>
>
>

Reply via email to