+ -
当前位置:首页 → 问答吧 → 关于程序退出后log4cxx的LoggerPtr变量造成崩溃的问题

关于程序退出后log4cxx的LoggerPtr变量造成崩溃的问题

时间:2010-07-13

来源:互联网

目前程序中使用了log4cxx,初始化过程是:
  1.         LoggerPtr p_log
  2.         const log4cxx::LogString conversionPattern =
  3.                         "%d{%m/%d/%y %H:%M:%S} [%t] %-5p - %m %n";
  4.         log4cxx::PatternLayoutPtr layout = new log4cxx::PatternLayout(
  5.                         conversionPattern);
  6.         log4cxx::ConsoleAppenderPtr console(layout);
  7.         log4cxx::RollingFileAppenderPtr file(new log4cxx::RollingFileAppender(
  8.                         layout, log4cxx::LogString(filename), true));

  9.         file->setMaxBackupIndex(logMaxBackupIndex);
  10.         file->setMaxFileSize(log4cxx::LogString(logFileSize));
  11.         log4cxx::helpers::Pool p;
  12.         file->activateOptions(p);

  13.         p_log = log4cxx::Logger::getLogger("./setup.log");
  14.         p_log->addAppender(file);
  15.         p_log->addAppender(console);
  16.         p_log->setLevel(log4cxx::Level::getTrace());
复制代码
但是程序退出时,会造成崩溃,coredump中的堆栈如下,请朋友们解决帮助,非常感谢!

#0  0x00002b08b944eeda in apr_pool_create_ex () from /usr/lib64/libapr-1.so.0
#1  0x00002b08b6cdd140 in Pool (this=0x7ffff3f32630) at pool.cpp:34
#2  0x00002b08b6c93792 in log4cxx::helpers::MutexException::formatMessage (stat=22) at exception.cpp:227
#3  0x00002b08b6c93839 in MutexException (this=0x1878edf0, stat=1660219552) at exception.cpp:213
#4  0x00002b08b6d00047 in log4cxx::helpers::synchronized::synchronized ()
    at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/basic_string.h:233
#5  0x00002b08b6d1345d in log4cxx::WriterAppender::close (this=0x176b4e50) at writerappender.cpp:135
#6  0x00002b08b6c99848 in ~FileAppender (this=0x0, __vtt_parm=0x62f4f0a0) at fileappender.cpp:88
#7  0x00002b08b6c7fec6 in ~RollingFileAppenderSkeleton (this=0x176b4e50, __vtt_parm=0x2b08b6f72a8
    at ../../../src/main/include/log4cxx/rolling/rollingfileappenderskeleton.h:38
#8  0x00002b08b6cceee4 in ~RollingFileAppender (this=0x0) at obsoleterollingfileappender.cpp:88
#9  0x000000000041766d in ~ObjectPtrT (this=0x176af580)
    at /usr/local/include/log4cxx/helpers/objectptr.h:100
#10 0x00002b08b6c6b719 in ~AppenderAttachableImpl (this=0x176a4690)
    at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_construct.h:107
#11 0x00002b08b6cbcb11 in ~Logger (this=0x176a4700) at ../../../src/main/include/log4cxx/helpers/objectptr.h:100
#12 0x0000000000416ef5 in ~ObjectPtrT (this=0x82a3f0) at /usr/local/include/log4cxx/helpers/objectptr.h:100
#13 0x000000000040de2d in __tcf_7 () at main.cpp:60
#14 0x0000003c62c32fa5 in exit () from /lib64/libc.so.6

作者: rain_fish   发布时间: 2010-07-13

log4cxx很少人用吗?

作者: rain_fish   发布时间: 2010-07-13