2

我在 OS X 10.9.4 上并尝试使用newsyslog来轮换我的应用程序开发日志文件。

更具体地说,我想每天轮换文件,但前提是它们不为空(newsyslog 会在它轮换的每个日志文件中写入一两行,所以假设我只想轮换至少 1kb 的日志)。

我创建了一个文件/etc/newsyslog.d/code.conf

# logfilename                     [owner:group]   mode  count  size  when   flags [/pid_file] [sig_num]
/Users/manuel/code/**/log/*.log   manuel:staff    644   7      1     $D0    GN

我理解配置文件的手册页的方式是,size条件应该结合使用,因此只有在日志文件为 1kb 或更大时,when应在每晚午夜轮换日志文件。

不幸的是,这不是发生的事情。日志文件每晚都会轮换,无论它们只是来自 newsyslog 的轮换消息还是其他任何内容:

~/code/myapp/log (master) $ ls
total 32
drwxr-xr-x   6 manuel  staff   204B Aug  8 00:17 .
drwxr-xr-x  22 manuel  staff   748B Jul 25 14:56 ..
-rw-r--r--   1 manuel  staff    64B Aug  8 00:17 development.log
-rw-r--r--   1 manuel  staff   153B Aug  8 00:17 development.log.0

~/code/myapp/log (master) $ cat development.log
Aug  8 00:17:41 localhost newsyslog[81858]: logfile turned over

~/code/myapp/log (master) $ cat development.log.0 
Aug  7 00:45:17 Manuels-MacBook-Pro newsyslog[34434]: logfile turned over due to size>1K
Aug  8 00:17:41 localhost newsyslog[81858]: logfile turned over

任何有关如何使这项工作的提示将不胜感激!

4

1 回答 1

3

使用 newsyslog 无法找到您要查找的内容(每天轮换文件,除非他们没有记录任何内容)。您引用的手册页没有说任何关于sizewhen被组合的内容,只是说如果when没有指定,而不是只size指定了。现实情况是,当满足任一条件时,日志就会轮换。如果该实用程序与其 FreeBSD 对应物一样,除非设置了二进制标志,否则它将不会旋转小于 512 字节的日志。

MacOS 更新的 newsyslog 替代品ASL也没有您想要的行为。据我所知,唯一具有此功能的实用程序是使用其配置选项进行logrotate 。notifempty您可以使用Homebrew在 Mac 上安装 logrotate

于 2014-08-12T00:20:34.307 回答