我有一个运行 Nginx 的 Ubuntu Web 服务器。我从未配置过日志文件轮换,只是发现了一些数 GB 的单片日志文件。
我现在已经根据这些提示配置了日志轮换。但是,我不想在轮换发生之前等待一周(我的轮换期)。
有没有办法强制立即轮换特定文件或logrotate配置指定的所有文件?
我有一个 Tomcat 服务器,它通过阀门(org.apache.catalina.valves.FastCommonAccessLogValve)创建访问日志。该阀负责轮换访问日志文件,但不会在一段时间后压缩或删除它们。
目前,我有一个find [...] -mtime +30 [...]用于压缩和删除日志的 cron 作业。我宁愿使用 logrotate,以便日志轮换位于所有日志的集中位置。我不喜欢只针对 Tomcat 的单独解决方案。
我试图阅读 logrotate 文档,但我仍然有点迷茫。我可以使用 logrotate 来压缩和清理日志文件吗?我该怎么做?
或者扭转问题,是否有 Tomcat 访问日志阀可以压缩和清理日志文件?
感谢您的帮助 !
我在同一台服务器上通过 NginX 为几个不同的域提供服务,它们每个都记录到自己的文件中。我需要设置一个脚本来旋转,并压缩这些文件并将其添加到 cron。
我知道我必须做一些事情才能让 NginX 在移动旧的日志文件后打开一个新的日志文件。有人可以给我安全轮换 nginx 日志文件的程序吗?我猜我需要使用 logrotate,我该如何配置它?
系统:
我正在使用 posgtres 的内部日志轮换机制。我希望删除超过 30 天的日志文件。我如何让 postgres 做到这一点?如果 postgres 不支持它,我可以将 logrotate 设置为只删除 30 天以上的日志吗?
我目前的配置是:
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
#log_truncate_on_rotation = off
log_rotation_age = 1440
log_rotation_size = 0
Run Code Online (Sandbox Code Playgroud) fail2ban 是否继续监视轮换的日志文件?
例如,我有一个规则监控/var/log/fail2ban.log,它每周(7 天)由系统自动轮换。我想要一个规则来监控该日志中被禁止的 IP,以查找在过去 10 天内被禁止 5 次的重复违规者。那可能吗?
简而言之:
为什么 apache 自己重新启动或重新加载配置?
长版
在我的 debian lenny 稳定服务器上,它有一个非常默认的设置(apache2、mod_php、mysql 客户端、apc,...)我对我的 apc.ini 进行了更改,我不确定它是否有问题,因为它是一个生产服务器,我只是在没有重新启动网络服务器的情况下保护了文件。
今天@cron.daily时间(6:25),由于apc.ini错误,服务器自行重启并保持停机。我真的很想知道,为什么服务器会自行重启。还有为什么是今天?这是 cron.daily 时间而不是每周时间,错误的配置从星期二开始就在线。
定时任务:
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) …Run Code Online (Sandbox Code Playgroud) 我有两个不同的 (i386 v AMD) Debian 机器并且有同样的问题。logrotate 不会自动旋转我的日志。当我手动强制它时它工作正常
/usr/sbin/logrotate -f /etc/logrotate.conf
但这对我来说不好。
设置没有修改(至少我没有修改它们),AMD 盒子是全新安装的,但不能完成它的工作。
如果您注意到类似的问题,请帮助我。
更新(一些服务器输出):
logrotate -d http://pastebin.com/e6AshtGq
ls -l /var/log http://pastebin.com/Y2A4Li59
cat /etc/logrotate.conf http://pastebin.com/1h7Uwctr
ls -l /etc/logrotate.d http://pastebin.com/NvUAeszM
我正在研究 Windows 上我们的 Web 服务器(不是 apache)的日志轮换。我听说过 cronolog、CHOMP 等。Windows 有内置的旋转 .exe 吗?你发现什么是一个好的对数旋转应用程序?
在我的配置中,我有 rsyslog 负责跟踪/home/user/my_app/shared/log/unicorn.stderr.log使用imfile. 使用 TCP 将内容发送到另一个远程日志服务器。
当日志文件轮换时,rsyslog 停止向远程服务器发送数据。
我尝试重新加载 rsyslog,发送 HUP 信号并完全重新启动它,但没有任何效果。
我发现实际有效的唯一方法是肮脏的:
kill -9 rsyslog 并重新开始。有没有合适的方法让我在不接触 rsyslog 内部的情况下做到这一点?
Rsyslog 文件
$ModLoad 标记 $ModLoad imudp $ModLoad imtcp $ModLoad imuxsock $ModLoad imklog $ModLoad 文件 $template withoutTimeFormat,"[环境] [%syslogtag%] -- %msg%" $WorkDirectory /var/spool/rsyslog $InputFileName /home/user/my_app/shared/log/unicorn.stderr.log $InputFileTag unicorn-stderr $InputFileStateFile stat-unicorn-stderr $InputFileSeverity 信息 $InputFileFacility local8 $InputFilePollInterval 1 $InputFilePersistStateInterval 1 $InputRunFileMonitor # 转发到远程服务器 如果 $syslogtag 包含 'apache-' 那么 @@my_server:5000;WithoutTimeFormat :syslogtag, …
我有一个 logrotate.d 配置文件,看起来像这样:
/home/myapp/log/* {
daily
compress
dateext
ifempty
delaycompress
olddir /home/myapp/baklog
}
Run Code Online (Sandbox Code Playgroud)
我想在一些特定的日志文件中应用其他规则,例如“邮件”。如何仅对某些文件应用其他规则?
如果我在上面添加另一个与附加文件匹配的规则(例如/home/myapp/log/warning.log { ... },我收到类似error: /etc/logrotate.d/myapp:3 duplicate log entry for /home/myapp/log/warning.log.
如何指定以重叠方式匹配特定文件的多个规则?