问题标签 [log-rotation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2495 浏览

logging - Kubernetes 上的 Fluentd 日志记录跳过日志轮换的日志

目前,我在 Kubernetes 中有以下架构:

  • 在一个 pod 中,一个服务和一个 sidecar 容器(称为logger)正在运行。
  • 服务写入文件,sidecar 容器读取该文件并将其写入标准输出。
  • fluentd daemonset 配置为读取输出(收集在 中的文件中/var/log/containers/*_logger-*.log,该文件是指向另一个文件的链接(自上次文件轮换以来的最新文件,指向较旧的文件,没有链接点)。
  • 总是 3 条日志消息属于一起(一些相同的字段)

对于数千条消息,此配置按预期工作。

但是,这里有问题:

我注意到 fluentd 有时只转发属于一起的 3 条消息中的 1 或 2 条日志消息,尽管所有 3 条消息都是由服务和 sidecar 容器编写的。

为了解释,假设 1 被转发,2 和 3 不被转发。经过一番研究,我发现,在这种情况下,消息 1 是日志轮换之前的最后一条消息,消息 2 和 3 位于另一个文件中(符号链接自轮换以来指向的位置,因此应该阅读)。

因此,看起来 fluentd 在 kubernetes 日志轮换后继续读取新文件之前跳过了一些行。

  • 这是一个已知问题吗?
  • 为什么fluentd和kubernetes会这样?
  • 主要问题是:为了接收所有日志消息,我能做些什么来防止这种行为?

我正在使用泊坞窗图像fluent/fluentd-kubernetes-daemonset:v0.12.33-elasticsearch

如果需要更多信息,请告诉我。

0 投票
2 回答
2278 浏览

linux - 如何每天轮换日志,仅使用当天的数据?

我使用 logrotate 旋转我的 nginx 访问日志文件,并具有以下配置:

}

例如,当 cron 在凌晨 5 点运行该脚本时,文件中凌晨 0 点到 5 点之间的所有日志都将被轮换。我想要一个从午夜到晚上 11.59 整整一天的日志文件

有机会配置这个吗?

0 投票
1 回答
111 浏览

perl - Perl - 如何跳过先前处理中已经读取的行

我在使用 Perl 程序时遇到了问题,该程序可用于重新组织对应用程序的访问跟踪。

我已经使用跳转行功能实现了以下解决方案,因为未来我可以拥有 10 个或更多旋转文件,每个文件 50MB。

我想跳过之前处理中已经读取的行(如果文件的 inode 没有更改),这样我将只使用增量。

我希望这段代码可以帮助其他用户。

我的日志文件是

logrotate_1.0.log

logrotate_0.0.log

我在使用第 54 行的语句时遇到问题:

我认为它不起作用,因为我使用了以下记录分隔符,但我不明白我必须使用哪种分隔符来解决这个问题:

为了调试代码,我插入了以下语句:

print "next unless $. > $jumprow\n";

如我所见,$。值与文件的行号不同(原因是记录分隔符带有双新行---> $/ = "\n\n";)

如果我删除我的双新行,脚本不起作用

我的脚本的详细信息:(1)第一步:读取 STAT_FILE 以查看上次运行中读取的行

(2)第二步:我将日期、时间、操作(登录或注销)和用户(如果不是访客)封装到一个数组(@events)中。我按用户排序数组(默认不是按日期)。

(3)第三步:我将读取的日志文件的信息打印到 STAT_FILE 中

(4)第四步:我将排序后的@event 数组写入名为 MM-YYYY 的目录中的文件 parse_log.csv 中(这取决于我的事件日期)。

你能帮我找到我的脚本的解决方案吗?

0 投票
1 回答
2787 浏览

php - PHP Monolog 记录器 RotatingFileHandler 从不旋转文件

PHP 7.1,ubuntu 12.04 LTS,独白版本是 1.23.0。

记录器初始化:

当前路径中有 24 个日志文件,而不是预期的 5 个。

如何强制独白按预期旋转文件?我是否需要做一些额外的步骤来旋转文件,什么原因可能导致不删除旧日志?

0 投票
1 回答
368 浏览

java - 有没有办法在压缩旋转的日志文件之前添加延迟

在压缩旋转的日志文件之前,我需要添加一些单位时间的延迟。我正在使用 logback-core,我的 xml 看起来像这样:-

有什么办法吗?我在这里看到了一种扩展滚动策略类的方法但不确定类似的方法是否可以在这里工作。

0 投票
0 回答
2902 浏览

logging - Windows 中的 STDOUT 和 STDERR 日志轮换 TOMCAT

我是 solr 的新手,对 java 不是很好。

我们使用 solr 作为我们的搜索解决方案,tomcat 在 windows 中作为服务托管,solr 在 tomcat 中运行。

我们正在尝试为 tomcat 实现日志轮换。我们尝试使用log4j.propertiesin 和logging.properties. 但出于某种原因,stdout 和 stderr 仍在堆积并占用大量空间。

我们正在使用log4j.properties旋转 solr 日志。

如果我们能在旋转 stdout 和 stderr 日志方面获得一些帮助,我们将不胜感激。

我们尝试了 3 种不同的方法,但都没有按预期工作。

  1. 将标准输出添加到 log4j.properties

    solr.log=logs/log4j.rootLogger=错误,标准输出

    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n

    使用日志清理进行大小轮换。

    log4j.appender.stdout=org.apache.log4j.RollingFileAppender log4j.appender.stdout.MaxFileSize=4MB log4j.appender.stdout.MaxBackupIndex=9

    - 要记录的文件和记录格式

    log4j.appender.stdout.File=${solr.log}/solr.log log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%-5p - %d{ yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n

  2. 在 tomcat 中为 logging.properties 添加了文件大小限制。

    java.util.logging.FileHandler.limit = 2000000 java.util.logging.FileHandler.count = 5

  3. 更新 Monitor Tomcat 应用程序中的 Java 属性。

在tomcat的java选项卡下添加了以下java选项

-Djava.util.logging.FileHandler.limit=25000000

所有这些尝试都失败了,我们不得不重新启动 tomcat 来旋转文件,这在生产中是不可取的。

Tomcat:8.0.20
Solr:4.10.3
操作系统:Windows

0 投票
1 回答
968 浏览

linux - Log-rotate 压缩后删除原始文件

我的 someDir 中有以下文件:

我在 /etc/logrotate.d/ 中有以下日志轮换模式:

运行日志轮换脚本时,它会以某种方式删除 someDir 中的所有文件。我想要的是 .gz 所有文件并在压缩后删除原始文件。我不想删除 .gz 文件。

0 投票
0 回答
246 浏览

logging - 如何在 Node-RED 中轮换日志?

如何在 Node-RED 中轮换日志文件?我会将 Node-RED 日志写入日志文件。但我希望在达到特定时间或大小限制时创建/替换现有文件。我怎样才能像在 Java 和其他编程语言中那样实现这一点?

如果我的方法在这种情况下是错误的,请建议正确的方法。

0 投票
0 回答
450 浏览

ruby-on-rails - ruby on rails 中自定义日志文件的日志轮换

我想知道我们如何在 ruby​​ on rails 中旋转自定义日志文件。我已经搜索并找到了轮换环境日志文件(development.log、production.log)的方法。但我的要求是轮换应用程序中的每个日志文件。

这可以使用 logrotate 工具来完成。但是,我想从应用程序本身处理日志轮换。

rails logger 类怎么可能做到这一点?

是否有一种通用的方法可以做到这一点(可能在 application.rb 中),而不是在创建每个应用程序日志的地方指定班次年龄和文件大小。

任何帮助将不胜感激。

0 投票
0 回答
266 浏览

python - Python:即使在 Windows 中登录后也连续读取文件

这个链接中,在接受的答案中,给出了基于 Unix 的解决方案。我想在 Windows 中做同样的事情。因为,i-node 不适用于 windows 和 python 2.7 堆栈,所以我找不到任何读取日志文件的好方法。我目前的方式是这样的:

这样做的问题是,如果在时间睡眠时附加了行,则会错过最后一行,并且在唤醒之前发生旋转。阅读所有行对我来说很重要。有什么办法可以在 Windows 中做到这一点?