【发布时间】:2020-03-25 16:31:38
【问题描述】:
我有一个用于 log4cxx 配置的属性文件,其变量名为 ${name}:
属性文件示例:
log4j.rootLogger=INFO, FILE
# FILE
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=./${name}
log4j.appender.FILE.MaxFileSize=16MB
log4j.appender.FILE.MaxBackupIndex=10
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %m%n
如何从我的 cpp 文件或 cmake 文件中设置变量 ${name}。 我尝试了以下代码,但它不起作用:
#include <log4cxx/logger.h>
#include <log4cxx/propertyconfigurator.h>
#include <log4cxx/helpers/properties.h>
using namespace log4cxx;
static LoggerPtr logger(Logger::getLogger(""));
int main() {
PropertyConfigurator::configure("./assets/logger.properties");
#ifndef NDEBUG
logger->setLevel(log4cxx::Level::getDebug());
#endif
return EXIT_SUCCESS;
}
提前致谢
【问题讨论】:
-
您是否尝试用属性文件中变量
name保存的值对${name}进行文本替换?您发布的示例 cpp 代码并未清楚地表达您要完成的工作。name是怎么设置的?是环境变量吗? -
我正在尝试使用 Java 模拟示例,就像来自 https://stackoverflow.com/questions/2810926/how-to-give-dynamic-file-name-in-the-appender-in-log4j-xml 的答案一样。我的目的是为多个可执行文件创建一个属性文件,然后更改每个可执行文件的文件名
-
您可以使用 CMake 为每个可执行文件配置一个单独的
logger.properties文件,每个文件在插入的日志文件名中都有可执行文件的名称。为您的用例工作的每个可执行文件都有一个单独的属性文件吗? -
不幸的是,这是不可能的。我必须有一个属性文件,然后在 main 上设置 fileName 或从编译器的任何宏扩展中设置。提前致谢
标签: c++ cmake properties log4j log4cxx