docker - 如何在Docker容器中为Filebeat创建滚动日志

标签 docker logging log4j2 elastic-stack filebeat

我是log4j2和 flex 堆栈的新手。

我有一个filebeat docker容器,该容器无法完全按照我的要求运行,现在我想看看日志。但是当我执行docker-compose logs时,我得到了很多调试消息和json对象。有多少是不可读的。

我如何创建log4j2属性设置来创建一些滚动日志文件。也许将旧日志放入基于月度的文件夹中?并将该log4j2.properties文件放在哪里?

最佳答案

因为您正在运行docker-compose logs,它会生成大量日志,这将获取docker compose文件中所有容器的日志。

您想要的可能是:

  • docker logs <name-of-filebeat-container>。可以使用docker ps找到filebeat容器的名称。
  • docker compose logs <name-of-filebeat-service>。该服务的名称可以在您的docker-composer.yml文件中找到。

  • 关于JSON输出,您可以使用以下命令查询Docker引擎默认日志记录驱动程序:
    # docker info | grep 'Logging Driver'
    Logging Driver: json-file
    

    如果您的容器具有其他日志记录驱动程序,则可以使用以下命令进行检查:
    docker inspect -f '{{.HostConfig.LogConfig.Type}}' <name-or-id-of-the-container>
    

    您可以在link中找到所有日志驱动程序

    要使用其他日志驱动程序运行容器,您可以执行以下操作:
  • 使用docker运行:docker run -it --log-driver <log-driver> alpine ash
  • 与docker-compose一起使用:
    `logging:
      driver: syslog
      options:
        syslog-address: "tcp://192.168.0.42:123"`
    

  • 关于日志轮换问题,我想说的最简单的方法是使用syslog驱动程序配置日志记录驱动程序,将其配置到本地计算机(或syslog服务器),然后对文件进行logrotate。

    您可以找到几本Linux的logrotate文章(我假设您正在使用),例如this one

    关于docker - 如何在Docker容器中为Filebeat创建滚动日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52854955/

    相关文章:

    docker - Docker从文件安装

    docker - Jenkins 撰写文件的Docker卷为空,未复制任何文件

    node.js - 如何禁用默认 BotBuilder 日志

    java - Spring Boot 2.3 中不打印自定义异常的 Stacktrace

    java - 浏览器代理 : How to determine IP for proxy server?

    docker - 在树莓派上拉取请求被拒绝的Docker XMR-Stak挖掘Monero

    sql-server - 限制 NLog 数据库目标大小

    java - 如何使用xi :include from external library?引用外部log4j2配置文件

    java - Log4j2:如何在不使用 Throwable 的情况下获取类名和行号?

    java - 如何配置 log4j2 来记录 HikariCP