标签: logrotate

logrotate 配置文件语法 - 可能有多个通配符条目吗?

由于手册页没有回答我的问题,而且我不想强制循环,所以我决定在这里提出这个问题。

logrotate 的手册页给出了以下示例:

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail www@my.org
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }
Run Code Online (Sandbox Code Playgroud)

所有带有通配符的示例都只包含一个条目。现在,我感兴趣的是是否也允许这样做:

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
       # ... same as above
   }
Run Code Online (Sandbox Code Playgroud)

原因如下:我有多个虚拟主机,我将它们拆分为“拥有”这些虚拟主机的用户。由于日志文件是世界可读的,我想将一个文件夹绑定挂载到用户主目录中,但将其限制为用户“拥有”的日志文件,这是通过将日志分离到文件夹中最容易实现的(并绑定- 无论如何安装都需要该方案)。因此,我正在寻找一种解决方案来轮换该目录下的日志文件/var/log/httpd以及该目录的子目录下的所有日志文件 -无需按名称列出每个子目录。

一般来说,手册页不提供通配符规则是否可能有多个条目或仅用于完整路径的线索。我正在使用 Debian“Squeeze”附带的 logrotate 版本 3.7.8-6,但我认为这不一定特定于发行版或程序版本。

linux debian logging debian-squeeze logrotate

94
推荐指数
3
解决办法
9万
查看次数

标准输出的日志轮换?

我有一个 Linux 程序,它可以将信息写入 stdout 和 stderr。

我有一个 shell 脚本,可以将该输出重定向到/var/log. (通过>>2>&1。)

有没有办法让日志文件轮换?(最大大小,然后切换到不同的文件,只保留有限数量的文件)

我看过一些谈论该logrotate程序的答案,听起来不错,但它们似乎也专注于在内部生成日志文件并处理 HUP 信号的程序。有没有办法使用基本的输出重定向脚本来完成这项工作?

linux redirection shell-script stdout logrotate

68
推荐指数
5
解决办法
5万
查看次数

如何使用systemd进行logrotate?

我正在使用带有单元文件的 systemd 运行节点应用程序。可以使用应用程序日志查看,journalctl -u example.com但日志在某些时候被删除,删除历史记录(我需要调试)。

如何使用 systemd 配置日志轮换,以便我的应用程序日志存储在等中example.com.log.1example.com.log.2以便查询应用程序的历史记录?

这是我的单元文件:

ExecStart=/usr/bin/node keystone.js
#Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=example.com
User=user
Group=user
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

logrotate systemd

18
推荐指数
1
解决办法
2万
查看次数

由于非 root 所有权,Logrotate 不再读取符号链接的配置文件

我们目前正在 ruby​​ on rails 应用程序服务器上从 Ubuntu 12.04 LTS 升级到 14.04 LTS,并且注意到日志文件不再循环。

在两台机器上,我们都有一个/var/app-name/config/logrotate由 unix 用户拥有的文件,deployer其中包含一个有效的 logrotate 文件,如下所示:

/var/app-name/log/*.log {
  daily
  rotate 365
  delaycompress
  compress
  dateext
  dateformat -%Y%m%d
  missingok
  copytruncate
}
Run Code Online (Sandbox Code Playgroud)

然后将其符号链接到/etc/logrotate.d/目录中app-name

在我们的 Ubuntu 12.04 服务器上,我们有运行良好的 logrotate 3.7.8。它进入var/app-name/log/目录并轮换所有日志文件

但是在 Ubuntu 14.04 服务器上,我们有 logrotate 3.8.7,它不会为我们的应用程序旋转日志文件。

当我通过调试它时,sudo logrotate -d -f /etc/logrotate/.conf我得到以下输出:

Ignoring /etc/logrotate.d/app-name because the file owner is wrong (should be root).
Run Code Online (Sandbox Code Playgroud)

在代码中追踪这一点,似乎为 3.8.x 发布流添加了此更改:https : //github.com/demands/logrotate/commit/b8ce386a969c60e5c8ee78023c24a1ba0aab1526

如果我更改文件的所有权符号链接到/var/app-name/config/logrotateroot那么它再次开始工作。但是鉴于此文件是我的应用程序的一部分,并且由我们在此状态下使用的 …

permissions ubuntu logrotate

15
推荐指数
1
解决办法
5254
查看次数

logrotate 无法旋转日志,出现“没有此类文件错误”

logrotate 无法旋转我的日志。我检查了文件权限,它们很好。

我什至尝试将“su root root”放在配置文件中,但我仍然面临同样的问题。

请在下面找到相关详细信息:

logrotate.conf 文件:

/var/log/testlog {
    compress
    delaycompress
    dateext
    maxage 180
    rotate 15
    size 1024M
    start 1
    rotate 15
    missingok
}
Run Code Online (Sandbox Code Playgroud)

调试日志:[使用“-d”选项]

rotating pattern: /var/log/testlog  1073741824 bytes (15 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/testlog
  log needs rotating
rotating log /var/log/testlog, log->rotateCount is 15
dateext suffix '-20140708'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
compressing log with: /bin/gzip
renaming /var/log/testlog.15.gz to /var/log/testlog.16.gz (rotatecount 15, logstart 1, i 15), 
renaming /var/log/testlog.14.gz to /var/log/testlog.15.gz (rotatecount …
Run Code Online (Sandbox Code Playgroud)

linux logging logrotate

12
推荐指数
2
解决办法
2万
查看次数

LogRotate 使用正则表达式作为文件名

我有一个自定义日志记录类,它为进程的每个实例创建一个日志,并为日志文件名添加一个唯一的 id,例如:

  • process.1234.log
  • process.1235.log

我也可以添加日期/时间戳,例如:

  • process.1234.03012012.log
  • process.1235.03012012.log

LogRotate 是否能够使用正则表达式,以便我可以按日期和/或进程 ID 归档我的日志文件?

regex logging logrotate

5
推荐指数
1
解决办法
1万
查看次数

cron.daily 会在开始下一个作业之前等待作业完成吗?

这个页面http://wiki.ci.uchicago.edu/I2U2/WebalizerConfiguration 建议重命名 /etc/cron.daily/logrotate 所以它在 /etc/cron.daily/webalizer 之后 - webalizer 应该在 logrotate 开始之前完成。

真的吗 ?cron.daily 会在开始下一个作业之前等待作业完成吗?

linux cron logfiles logrotate lock

5
推荐指数
1
解决办法
2587
查看次数

logrotate 配置和执行

我正在尝试配置logrotate为每天午夜轮换和删除日志文件,但以前从未使用过它。所以:(a) 我想确认我的配置是正确的,并且 (b) 我需要帮助在午夜自动执行它的日常执行。

我的软件在/abs/path/to/log/myapp-log.txt. 这是我想要发生的事情:

  • 为每个日志文件添加时间戳,名称中带有日期扩展名
  • /abs/path/to/log/在任何时间点只有 1 个日志文件;所以每次轮换日志并创建一个新的日志文件时,删除旧的

logrotate.conf

/abs/path/to/log/myapp-log.txt {
    daily
    copytruncate
    create 700 myUser myGroup
    dateext
    maxage 1
    missingok
}
Run Code Online (Sandbox Code Playgroud)

我在这里不确定的一些事情:

  • 我是否需要指定daily是否指定 a maxageof 1?
  • 究竟在missingok做什么?如果日志文件不存在,则忽略系统警告?如果我不指定missingok并且日志文件不存在会发生什么?
  • copytruncate如果我指定daily/ ,我什至需要maxage 1吗?这三个设置感觉有点多余,但不确定每一个扮演什么角色。

其次,我如何确保每天午夜运行?克朗?我之所以这么问,是因为我读到了/etc/cron.daily/logrotate每天自动运行的某个地方,但不确定它是如何配置的。提前致谢。

linux logging purge logrotate

4
推荐指数
1
解决办法
9347
查看次数

如何旋转类似于 logrotate 的枚举文件名?

我有几个文件,比如 map-0.jpg(最新)、map-1.jpg、map-2.jpg、...、map-9.jpg(最旧)。现在我的 cronjob 从互联网上下载了一张新图片,并将其保存为 map-0.jpg。但是,所有其他文件都应重新枚举(0 -> 1、1 -> 2 等)。就我而言,数字 9 可以丢弃。

是否有一个方便的 bash 命令可以像 logrotate 一样枚举我的文件?

感谢帮助!

linux bash logrotate

4
推荐指数
1
解决办法
5069
查看次数

为什么logrotate的bin路径是`/usr/sbin`

为什么/usr/sbinDebian 上的 logrotate 的 bin 路径(至少是“wheezy”)知道我们实际上可以在没有 root 权限的情况下使用它?

linux debian logrotate

3
推荐指数
1
解决办法
450
查看次数