问题标签 [logrotate]
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.
log4j - 当 logrotate 旋转日志文件时,log4j fileappender 不会切换到新文件
语境:
我想使用 log4j 将与审计相关的日志写入特定的日志文件,比如 audit.log。我不想使用 syslogappender(基于 udp),因为我不想容忍数据丢失。另外,当文件达到一定大小时,我正在使用 logrotate 来轮换 audit.log。
问题:
我遇到的是,当 logrotate 将文件 audit.log 旋转到 audit.log.1 时,log4j 继续写入 audit.log.1 而不是写入 audit.log。
可能的方法:
我知道我可以使用 rollingfileappender 进行日志轮换,而不是使用 logrotate,所以当 rollingfileappender 滚动文件时,它会毫不费力地切换到新文件。但是我不能使用 rollingfileappender 的原因是我想使用 logrotate 的 post rotate 功能在旋转发生后触发一些rollingfileappender 无法提供的脚本。
我能想到的另一种绝望的方法是自己编写一个 log4j 自定义的 appender 来关闭日志文件(audit.log.1)并在检测到文件被轮换时打开新的(audit.log)。
我从未使用过 ExternallyRolledFileAppender,但如果可以使用 logrotate post rotate 将信号发送到 ExternallyRolledFileAppender 并使 log4j 知道文件已旋转,并开始写入新文件?
问题:
只是想知道是否已经发明/编写了一些像这样的附加程序?还是我有其他选择来解决这个问题?
ubuntu - 错误:创建状态文件时出错 /var/lib/logrotate/status:权限被拒绝
尝试使用 logrotate 并在为 logrotate.d 中的特定定义运行日志轮换脚本时收到以下错误
error: error creating state file /var/lib/logrotate/status: Permission denied
我还没有触及那条路径,所以我想知道为什么它会默认创建一个错误......
icecast - Icecast 文件不再记录
我在使用以下 logrotate 和 icecast access.log 时遇到以下问题:
- 文件 access.log 随机停留在 0ko 并且不记录任何内容
- 存档文件 access.log-20120601.gz 为空
这是我的 /etc/logrotate.d/icecast
c - 通过 C 程序管道日志输出,以便于日志轮换
我正试图让我的一些通过 bash 重定向记录的应用程序变得非常容易登录。基本上,我有一个将 STDIN 读入缓冲区的 C 程序。它读取此缓冲区,并且每当遇到换行符时,它将收集到的输出写入文件。
该程序的不同之处在于它不会使文件保持打开状态。每次遇到新行时,它都会打开它以进行追加。这与 logrotate 实用程序配合得很好,但我想知道是否存在某种可怕的不可预见的问题,我没有考虑到稍后会遇到的问题。
仅在此实用程序中实现信号处理并让 logrotate 向其发送 SIGHUP 会更好吗?我正在做的事情有可怕的性能损失吗?
所以通常你会在哪里做:
使用记录器实用程序,您可以:
虽然我的 C 语言太差了,但我并不十分精通它的最佳实践。任何指导将不胜感激。
这是来源:
谢谢!
logrotate - logrotate 使用的默认大小是多少?
我查看了手册页,在这里搜索,谷歌搜索等。
有谁知道 logrotate 使用的默认大小?
您可以引用哪些参考来说明默认大小?
我知道我可以在我的配置文件中专门设置大小。
truncate - WTMP (RHEL 5/6) 日志维护 - 需要保持滚动日志而不是轮换
我们有使用 wtmp 使用项目的策略要求,例如“last”命令或 GDM-Last-Login 详细信息。我们发现这些项目会根据上次轮换 wtmp 的时间而存在间隙,因此需要尝试解决此问题。
因为这些差距已被确定为不可接受的,并且将 wtmp 数据永远保存在单个活动日志文件中而不将旧数据拆分为档案是不可行的,所以我正在寻找一种方法来翻转/老化旧的 wtmp 条目,同时仍然保留最近的。
从一些初步研究中,我看到在 Unix(AIX、SunOS)世界中使用“fwtmp”和一些前/后 logrotate 脚本解决了这个问题。Linux 世界是否已经解决了这个问题,而我只是错过了它?
据我所知,'fwtmp' 是 Unix 内置的,它没有被纳入 RHEL 5 和 6,每搜索 RHEL 客户门户网站和一些'yum whatprovides' 在我的测试盒上搜索。
提前谢谢了!
shell - Logrotate 和 Shell 脚本
给定目录中的日志文件,如下所示:
鉴于大约有 155450 个这样的文件,我怎样才能以简单或有效的方式执行以下操作:
使用 logrotate 或其他工具为每个月创建一个文件夹:例如,mkdir $currentMont = october,然后将所有 2012 年 10 月的文件放在那里,依此类推,每个月。
logging - logrotate:为什么在轮换后重新加载服务器配置
我看到 nginx 和 apache 在它们的日志轮换后都发送了某种形式的重新加载信号。为什么是这样?我想知道,因为我正在为我自己的应用程序设置它,并且想知道如果日志在没有更新的情况下轮换,应用程序是否会因某种原因挂起。
unix - logrotate 是复制当前文件还是重命名当前文件
我在网上阅读了几篇文章,但我仍然不明白 logrotate 是如何工作的。
我的配置文件如下:
我注意到每当 logrotate 启动时,我的主要服务性能都会下降一点。我试图找出原因。
我现在能想到两件事。
一种是 logrotate 实际上复制文件而不是重命名它们。这是真的?我知道 logrotate config 有一个名为 copy 的选项。如果我不设置该选项,logrotate 是否仍会复制文件?我的文件很大,每个> 2G。
另一件事是 HUP 信号导致我的服务性能下降。我会跟进的。
谢谢,杰瑞
php - 如何使用 php 日志配置 logrotate
我正在使用 APC 作为操作码和应用程序缓存运行 php5 FPM。像往常一样,我将 php 错误记录到文件中。
由于它变得相当大,我尝试配置 logrotate。它可以工作,但在轮换之后,php 继续记录到现有的日志文件,即使它被重命名。这导致 scripts.log 成为 0B 文件,并且 scripts.log.1 继续进一步增长。
我认为(还没有尝试过)在 postrotate 中运行 php5-fpm reload 可以解决这个问题,但这每次都会清除我的 APC 缓存。
有人知道如何使它正常工作吗?