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

时间:2018-10-17 12:32:13

标签: docker logging log4j2 elastic-stack filebeat

我是log4j2和弹性堆栈的新手。

我有一个无法正常运行的filebeat docker容器,现在我想看看日志。但是当我做docker-compose logs时,会得到很多调试消息和json对象。有多少是不可读的。

如何创建log4j2属性设置来创建一些滚动日志文件。也许将旧日志放在每月的文件夹中?并将这个log4j2.properties文件放在哪里?

1 个答案:

答案 0 :(得分:0)

由于您正在运行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