logging - ElasticSearch:如何配置 logging.yml

标签 logging elasticsearch zip

我已经在 Ubuntu 机器上安装了 ElasticSearch 1.4.1。

它的日志在默认位置:

/var/log/elasticsearch/

当我运行 ElasticSearch 时,一段时间后日志文件变大,变得难以处理。

日志已经处于循环文件模式。也就是说,每天都有一个新的日志文件。

我想将日志配置为压缩(例如 = file.log.zip ,目前它们不是)。

我也知道我可以在logging.yml文件里做,但我不知道怎么做。

有人可以帮我吗?

最佳答案

经过一些挖掘(也在 ElasticSearch 源代码中),我找到了答案。 :)

通常,当您使用像 ElasticSearch 这样的软件并希望将其用于生产环境时,您会认为像日志记录这样的基本功能就可以解决所有问题。 遗憾的是,在当前版本(1.4 及之前的版本)中情况并非如此。

ElasticSearch 使用 log4j 作为其日志记录机制。

log4j 正在执行以下操作:

  1. 将日志添加到日志文件
  2. 当日志文件大于 CONFIGURED_VALUE 时轮转日志文件

如果 ElasticSearch 的使用量很大,日志会堆积起来并最终填满您的整个存储空间。

答案是添加以下内容:

  1. 压缩旧的旋转日志文件
  2. 确保日志文件总数不会超过 CONFIGURED_VALUE

答案是有另一个名为 log4j-extensions 的 API,它扩展了 log4j 功能并压缩了循环日志文件。

遗憾的是,它将仅在下一个版本 1.5 或 ma​​ster 分支中可用,供我们这些疯狂的从源代码编译 ElasticSearch 的人使用。 (参见 log4j rollingPolicy support)。

但是,有一个更简单的解决方案:

使用 LOGROTATE 来处理您的日志。

如果 ElasticSearch 在 Linux 操作系统上运行,您可以使用 logrotate 守护程序。 (看看什么是log rotate Understanding logrotate utility )

您需要执行以下操作:

  1. 重置日志配置
  2. 创建用于处理日志文件的新文件

重置日志配置

sudo vi /etc/elasticsearch/logging.yml

logging.yml 中更改以下内容

# Mark the dailyRollingFile Appender
#  file:
#    type: dailyRollingFile
#    file: ${path.logs}/${cluster.name}.log
#    datePattern: "'.'yyyy-MM-dd"
#    layout:
#      type: pattern
#      conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"

# Add the file Appender
file:
  type: file
  file: ${path.logs}/${cluster.name}.log
  datePattern: "'.'yyyy-MM-dd"
  layout:
    type: pattern
    conversionPattern: "[%d{ISO8601}][%-5p][%-25c] %m%n"

创建用于处理日志文件的新文件

sudo vi /etc/logrotate.d/elasticsearch

将以下内容添加到 logrotate 文件中:

/var/log/elasticsearch/*.log {
    daily
    rotate 100
    size 50M
    copytruncate
    compress
    delaycompress
    missingok
    notifempty
    create 644 elasticsearch elasticsearch
}

之后重启 ElasticSearch

sudo service elasticsearch stop
sudo service elasticsearch start

这样您就可以将总日志文件存储限制为 5GB(旋转 100 * 50M)。

显然,您可以根据需要配置它。

关于logging - ElasticSearch:如何配置 logging.yml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28696069/

相关文章:

node.js - ElasticSearch标准Node客户端可安全用于云功能吗?

elasticsearch - 加快Elasticsearch字词聚合/SELECT DISTINCT

java - 如何在 java 中压缩或解压缩时向 zip 实用程序添加进度条?

java - 当我使用 Logback 时,ElasticSearch 错误 StatusLogger Log4j2 找不到日志记录实现

swift - 如何使用 swift 4 for mac os 应用程序提取和创建 .zip 文件?

gradle - 如何使用 Gradle 生成源代码的 ZIP?

Django 详细请求日志记录

java - 在 xml 日志文件中记录 xml 数据

python - 记录 TCP 套接字事件

java - 如何在文本文件中写入日志但不覆盖文件