【问题标题】:Log4cxx properties file variable substitutionLog4cxx 属性文件变量替换
【发布时间】: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


【解决方案1】:

找到解决方案:使用 stdlib 中的 setenv。 这是有效的解决方案:

#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;
}

我希望它不仅对我有用:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2018-04-19
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多