Rails本身没有提供
rotate日志文件的机制。因此,只能考虑其他方法了:
1、使用Ruby的标准Logger库
在environment.rb中增加如下配置:
config.logger = Logger.new(config.log_path, 'weekly')
这样,每周的日志将被保存在一个单独的文件中。
这种方法,对性能有一定的影响。Rails默认的logger,是BufferedLogger,对日志内容有
缓存,从而提高性能。
2、使用logrotate(限*nix)
logrotate是*nix下的一个工具,用来rotate各种日志文件。
配置方法请查看相关文档。
使用这个方法时,每次rotate,都要
重启Rails应用,必然造成瞬间的服务中断。
3、使用syslog(限*nix)
就是把Rails的日志写入系统日志,比如使用http://github.com/cpowell/sysloglogger。
新版的Ubuntu中的系统日志使用的rsyslog,这个日志系统本身支持按日期把日志保存到不同的文件,配置方法见http://wiki.rsyslog.com/index.php/DailyLogRotation。
使用这种方法,无需重启Rails应用,性能与Rails内建的日志相比,没有显著的下降。我认为是一种比较适合于对性能要求比较高的网站使用的方法。