root用户拥有的轮换日志文件,而不是应用用户

时间:2018-01-19 10:19:43

标签: ruby-on-rails logrotate log-rotation

我在Rails应用程序中使用日志轮换,这似乎起作用。但是,新的日志文件归root用户所有,而不是apps用户。该应用程序通过Passenger运行,该用户也使用apps用户。

是否可以让apps用户创建/拥有新日志而不是root

我在production.rb中使用的配置如下:

# Use default logging formatter so that PID and timestamp are not suppressed.
config.log_formatter = ::Logger::Formatter.new

config.logger = Logger.new(config.paths["log"].first, 3, 10.megabytes)

# Use a different logger for distributed setups.
# require 'syslog/logger'
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')

if ENV["RAILS_LOG_TO_STDOUT"].present?
  logger           = ActiveSupport::Logger.new(STDOUT)
  logger.formatter = config.log_formatter
  config.logger = ActiveSupport::TaggedLogging.new(logger)
end

1 个答案:

答案 0 :(得分:0)

我有完全一样的问题。原来,我有一个作为服务运行的进程的副本(使用systemctl)-我以为我暂时禁用了该服务。在这种情况下,日志文件将由“ root”拥有。

当我在前台启动第二个版本进行测试时,作为当前用户,一切似乎都正常,但是最终它将尝试旋转属于root的日志文件,这将失败,从而有效地禁用了日志记录。