c++ - 我可以在运行时更改 Log4Qt 配置的文件名吗?

标签 c++ qt logging log4cplus

我正在使用 Log4qt我跟着official steps配置日志文件。我想知道是否可以在运行时动态更改配置。假设默认文件是“myapp.log”

// Set logging level for Log4Qt to TRACE
s.beginGroup("Log4Qt");
s.setValue("Debug", "TRACE");

// Configure logging to log to the file C:/myapp.log using the level TRACE
s.beginGroup("Properties");
s.setValue("log4j.appender.A1", "org.apache.log4j.FileAppender");
s.setValue("log4j.appender.A1.file", "C:/myapp.log");
s.setValue("log4j.appender.A1.layout", "org.apache.log4j.TTCCLayout");
s.setValue("log4j.appender.A1.layout.DateFormat", "ISO8601");
s.setValue("log4j.rootLogger", "TRACE, A1");

// Log first message, which initialises Log4Qt
Log4Qt::Logger::logger("MyApplication")->info("Hello World");

我想在运行时更改文件名,像这样?

QSettings s;
s.beginGroup("Properties");
s.setValue("log4j.appender.A1.file", "C:/NewFile.log");

// Log first message, into new file
Log4Qt::Logger::logger("MyApplication")->info("Hello World");

最佳答案

看起来在你改变你的 QSettings 之后,它们会反射(reflect)在那里,你需要使用:

Log4Qt::Properties::load()

Log4Qt::PropertyConfigurator::configure()

引用您的 QSettings 变量。如果这不应用文件名更改,您可能需要寻找一种在 Log4Qt 单例上运行启动的方法。

希望对您有所帮助。

关于c++ - 我可以在运行时更改 Log4Qt 配置的文件名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13868838/

相关文章:

c++ - 如何在 QT 中将 Widget 放入另一个 widget 中?

java - 如何使用 java.util.logging 记录 JDBC 数据库查询?

Java:与 GUI 并行启动控制台?

c++ - 为什么不能将数字添加到关联容器的迭代器?

c++ - 如何将opengl进程绑定(bind)到具体的gpu卡上?

c++ - sprintf 等显示函数如何将数字转换为字符串?

Qtablewidget和Qtableview,哪个更适合制作下载任务列表?

c++ - 在 Linux 中使用 setsockopt 设置连接超时

c++ - QCombobox - 隐藏下拉列表中的第一项

logging - 在 PySpark 中禁用 INFO 日志记录