我想在一个mfc对话框程序中使用logcxx  我加了log4cxx.lib 在InitInstance()中加了代码
log4cxx::xml::DOMConfigurator::configure(_T("log4cxxTest.xml"));
然后在dlgcpp.h中加了 static log4cxx::LoggerPtr logger;
在dlgcpp.cpp中加了 LoggerPtr CFtpBackUpDlg::logger = Logger::getRootLogger();
在一个函数中加了 logger->debug("test");
程序运行没问题 但我定义了 fileappender 可是没有输出到文件中 请问是怎么回事呢?
那个配置文件应该放在哪里?有没有具体使用的例子 不要console的例子 要mfc的例子

解决方案 »

  1.   

    如果使用的是FileAppender就不能用这个语句了
    LoggerPtr CFtpBackUpDlg::logger = Logger::getRootLogger();你需要在配置文件里面定义一个Appender其type是FileAppender
    在AppendReference里面引用这个Appender,并且加一个name属性代码里面使用
    LoggerPtr CFtpBackUpDlg::logger = Logger::getLogger("AppenderName");
    AppenderName就是那个name属性
      

  2.   

    不是这样的吧 一个root logger 可以包含好几个appender 我在root logger里引用fileappender 
    我取得root logger 不可以吗?
      

  3.   

    一个root logger 可以包含好几个appender 我在root logger里引用fileappender 
    ------
    这样当然也是可以的
    那么你的问题肯定是配置上的问题
    你去官方网站看看文档吧
    那个配置文件应该放在哪里?
    ------
    可是使用绝对路径来加载配置文件
      

  4.   

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration (View Source for full doctype...)>
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" threshold="null" debug="null">
    <appender name="TEMP" class="org.apache.log4j.FileAppender">
    <param name="Append" value="true" />
    <param name="File" value="temp" />
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%-5p %c{2} - %m\n" />
    </layout>
    </appender>
    <root>
    <level value="DEBUG" class="org.apache.log4j.xml.XLevel" />
    <appender-ref ref="TEMP" />
    </root>
    </log4j:configuration>这是我的配置文件 我就是从官方例子上改的啊
      

  5.   

    你的xml文档有问题
    应该是 <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">