首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >log4cplus ConsoleAppender在容器中不工作。

log4cplus ConsoleAppender在容器中不工作。
EN

Stack Overflow用户
提问于 2022-08-31 19:46:36
回答 1查看 26关注 0票数 0

我正在尝试将我的应用程序封装起来,但我在log4cplus的工作上遇到了困难。在前面的底线上,日志在主机上运行时可以工作,但是当我从长时间运行的循环中记录时,在容器中则不能工作。在某个地方,它似乎是一个没有被冲走的缓冲。下面是一个最小的例子。

另外,删除长寿循环可以消除这个问题,大概是log4cplus在删除之前最后刷新一次。延长睡眠时间似乎没有帮助。

main.cpp

代码语言:javascript
复制
#include <iostream>
#include <unistd.h>

#include <log4cplus/logger.h>
#include <log4cplus/loggingmacros.h>
#include <log4cplus/configurator.h>
#include <log4cplus/initializer.h>

int main(int argc, char **argv)
{
    std::cout << "Sanity Check" << std::endl;

    auto log4cplus = ::log4cplus::Initializer();
    std::string logconfig("log4cplus_configure.ini");
    ::log4cplus::PropertyConfigurator::doConfigure(logconfig);
    auto logger = ::log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("main"));

    while (true) { 
        LOG4CPLUS_ERROR(logger, "Sleeping...");
        // std::cout << "cout sleep..." << std::endl; // uncomment to get log messages working
        sleep(1);
    }

    return 0;
}

log4cplus_configure.ini

代码语言:javascript
复制
log4cplus.rootLogger=INFO, MyConsoleAppender
log4cplus.appender.MyConsoleAppender=log4cplus::ConsoleAppender
log4cplus.appender.MyConsoleAppender.layout=log4cplus::PatternLayout
log4cplus.appender.MyConsoleAppender.layout.ConversionPattern=[%-5p][%d] %m%n

Dockerfile

代码语言:javascript
复制
FROM rockylinux:latest

RUN dnf install -y boost-system

COPY ./build/sandbox /
COPY ./log4cplus_configure.ini /

CMD  ["/sandbox"]

CMakeLists.txt

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.10)
set (CMAKE_CXX_STANDARD 17)

# Project executable and library
add_executable(sandbox main.cpp)

target_link_libraries(sandbox
    PUBLIC liblog4cplus.a
    PUBLIC pthread
    PUBLIC boost_system
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-31 20:20:20

不知道为什么,但是将log4cplus.appender.MyConsoleAppender.ImmediateFlush=true添加到log4cplus_configure.ini解决了我的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73561144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档