【发布时间】:2015-06-01 05:02:48
【问题描述】:
我有一个名为 Log4cxxConfig.cfg 的基于属性的 log4cxx。在其中我添加了一个名为 log4j.daemon 的命名记录器。我还创建了一个名为 QTermDaemonAppender 的附加程序。这是cfg文件的一部分:
log4j.rootLogger=info, rootFileAppender
log4j.StationControllertest=trace, rootConsoleAppender, rootFileAppender
log4j.log4test=trace, rootConsoleAppender
log4j.daemon=trace, QTermDaemonAppender
# QTermDaemonAppender
log4j.appender.QTermDaemonAppender.File=qterm_daemon.log
log4j.appender.QTermDaemonAppender.Append=true # set whether to overwrite or append to the file
log4j.appender.QTermDaemonAppender.MaxFileSize=10000KB
log4j.appender.QTermDaemonAppender.MaxBackupIndex=10
log4j.appender.QTermDaemonAppender=org.apache.log4j.RollingFileAppender
log4j.appender.QTermDaemonAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.QTermDaemonAppender.layout.ConversionPattern=%5p %d [%t] (%F:%L) - %m%n
在我的 C++ 代码中,我尝试了所有我能想到的将输出写入 qterm_daemon.log 的方法。除了没有写入任何内容之外,该文件没有被创建。
LoggerPtr logger(Logger::getLogger("daemon"));
int main(int argc, char* argv[])
{
// Initialise logger. Use the configuration file named 'log4cxx.properties'.
PropertyConfigurator::configureAndWatch("Log4cxxConfig.cfg");
我已经尝试了上述方法。我尝试过限定 cfg 文件的名称,例如“./Log4cxxConfig.cfg”。我已经在我的路径中搜索了这个文件的副本。我尝试使用记录器名称“log4j.daemon”而不是“daemon”。
我尝试了以下方法:
int main(int argc, char* argv[])
{
// Initialise logger. Use the configuration file named 'log4cxx.properties'.
PropertyConfigurator::configureAndWatch("Log4cxxConfig.cfg");
LoggerPtr logger(Logger::getLogger("log4j.daemon"));
同样,使用限定路径和更改记录器名称的各种组合。没有欢乐!我到底做错了什么?我可以让它在 AS400 上像使用 Java 和 log4j1.4 的冠军一样工作。顺便说一句,这是 Raspbian 和新的 Pi 2。
【问题讨论】: