我有一个用于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;
}
提前感谢
发布于 2020-06-29 16:05:53
找到解决方案:使用来自塞滕夫的stdlib。以下是工作解决方案:
#include <stdlib.h> // Include the library
#include <log4cxx/logger.h>
#include <log4cxx/propertyconfigurator.h>
#include <log4cxx/helpers/properties.h>
using namespace log4cxx;
static LoggerPtr logger(Logger::getLogger(""));
int main() {
// Set the env variable
// The identifier must be the same as the one in the log4cxx configuration file
setenv("name", "NAME_OF_THE_CURRENT_LOG_FILE", true);
PropertyConfigurator::configure("./assets/logger.properties");
#ifndef NDEBUG
logger->setLevel(log4cxx::Level::getDebug());
#endif
return EXIT_SUCCESS;
}
我希望它不仅对我有用:)
https://stackoverflow.com/questions/60853131
复制相似问题