问题标签 [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.
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
如果需要更多信息,请告诉我。
linux - 如何每天轮换日志,仅使用当天的数据?
我使用 logrotate 旋转我的 nginx 访问日志文件,并具有以下配置:
}
例如,当 cron 在凌晨 5 点运行该脚本时,文件中凌晨 0 点到 5 点之间的所有日志都将被轮换。我想要一个从午夜到晚上 11.59 整整一天的日志文件
有机会配置这个吗?
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 中(这取决于我的事件日期)。
你能帮我找到我的脚本的解决方案吗?
php - PHP Monolog 记录器 RotatingFileHandler 从不旋转文件
PHP 7.1,ubuntu 12.04 LTS,独白版本是 1.23.0。
记录器初始化:
当前路径中有 24 个日志文件,而不是预期的 5 个。
如何强制独白按预期旋转文件?我是否需要做一些额外的步骤来旋转文件,什么原因可能导致不删除旧日志?
java - 有没有办法在压缩旋转的日志文件之前添加延迟
在压缩旋转的日志文件之前,我需要添加一些单位时间的延迟。我正在使用 logback-core,我的 xml 看起来像这样:-
有什么办法吗?我在这里看到了一种扩展滚动策略类的方法,但不确定类似的方法是否可以在这里工作。
logging - Windows 中的 STDOUT 和 STDERR 日志轮换 TOMCAT
我是 solr 的新手,对 java 不是很好。
我们使用 solr 作为我们的搜索解决方案,tomcat 在 windows 中作为服务托管,solr 在 tomcat 中运行。
我们正在尝试为 tomcat 实现日志轮换。我们尝试使用log4j.properties
in 和logging.properties
. 但出于某种原因,stdout 和 stderr 仍在堆积并占用大量空间。
我们正在使用log4j.properties
旋转 solr 日志。
如果我们能在旋转 stdout 和 stderr 日志方面获得一些帮助,我们将不胜感激。
我们尝试了 3 种不同的方法,但都没有按预期工作。
将标准输出添加到 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
在 tomcat 中为 logging.properties 添加了文件大小限制。
java.util.logging.FileHandler.limit = 2000000 java.util.logging.FileHandler.count = 5
更新 Monitor Tomcat 应用程序中的 Java 属性。
在tomcat的java选项卡下添加了以下java选项
-Djava.util.logging.FileHandler.limit=25000000
所有这些尝试都失败了,我们不得不重新启动 tomcat 来旋转文件,这在生产中是不可取的。
Tomcat:8.0.20
Solr:4.10.3
操作系统:Windows
linux - Log-rotate 压缩后删除原始文件
我的 someDir 中有以下文件:
我在 /etc/logrotate.d/ 中有以下日志轮换模式:
运行日志轮换脚本时,它会以某种方式删除 someDir 中的所有文件。我想要的是 .gz 所有文件并在压缩后删除原始文件。我不想删除 .gz 文件。
logging - 如何在 Node-RED 中轮换日志?
如何在 Node-RED 中轮换日志文件?我会将 Node-RED 日志写入日志文件。但我希望在达到特定时间或大小限制时创建/替换现有文件。我怎样才能像在 Java 和其他编程语言中那样实现这一点?
如果我的方法在这种情况下是错误的,请建议正确的方法。
ruby-on-rails - ruby on rails 中自定义日志文件的日志轮换
我想知道我们如何在 ruby on rails 中旋转自定义日志文件。我已经搜索并找到了轮换环境日志文件(development.log、production.log)的方法。但我的要求是轮换应用程序中的每个日志文件。
这可以使用 logrotate 工具来完成。但是,我想从应用程序本身处理日志轮换。
rails logger 类怎么可能做到这一点?
是否有一种通用的方法可以做到这一点(可能在 application.rb 中),而不是在创建每个应用程序日志的地方指定班次年龄和文件大小。
任何帮助将不胜感激。
python - Python:即使在 Windows 中登录后也连续读取文件
在这个链接中,在接受的答案中,给出了基于 Unix 的解决方案。我想在 Windows 中做同样的事情。因为,i-node 不适用于 windows 和 python 2.7 堆栈,所以我找不到任何读取日志文件的好方法。我目前的方式是这样的:
这样做的问题是,如果在时间睡眠时附加了行,则会错过最后一行,并且在唤醒之前发生旋转。阅读所有行对我来说很重要。有什么办法可以在 Windows 中做到这一点?