5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsのログをsyslogに出す

Last updated at Posted at 2017-01-24

概要

Railsのログをsyslogで出す。
エラーレベルによってファイルを分けたかったのだが、rails側で設定するのが大変そうだったので、syslogを使うことにした。

関連記事

環境

  • CentOS release 6.7
  • ruby 2.3.1p112
  • Rails 5.0.0.1

gem

syslog-loggerというgemをインストール
https://github.com/ngmoco/syslog_logger

Gemfile
gem 'syslog-logger', '~> 1.6', '>= 1.6.8'

railsの設定

ログをsyslogに出す環境の設定ファイルに下記を追記。

config/environments/production.rb
Rails.application.configure do
# *snip*

  config.logger = Logger::Syslog.new
  config.logger = Logger::Syslog.new('appname', Syslog::LOG_LOCAL7)

# *snip*
end

syslogの設定

/etc/rsyslog.confに下記を追記

/etc/rsyslog.conf
!rails
# 全てのログを記録
*.*  /var/log/production-all.log
# notice以上のログを記録
*.notice  /var/log/production-notice.log
# errのみを記録(crit, alertなどは記録されない)
*.=err  /var/log/production-err.log
# noticeとerrの2つを記録
*.=notice;*.=err  /var/log/production-notice-err.log

このままではrailsのログが、/var/log/messagesにも出力されてしまうので、出ないように下記の部分を変更する。

/etc/rsyslog.conf
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
- *.info;mail.none;authpriv.none;cron.none;                /var/log/messages
+ *.info;mail.none;authpriv.none;cron.none;appname.none                /var/log/messages

rsyslogを再起動

再起動して設定を反映

# /etc/init.d/rsyslog restart

ログレベル

ログのプライオリティ一覧
上から順にプライオリティが高い。

ログレベル 内容
emerg システムが使用不能なレベル
alert すぐになんとかしないといけない状態
crit クリティカルなレベル
err エラー
warning ワーニング
notice ちょっと注意したほうがいいレベル
info 情報
debug デバッグレベル

引用元: http://www.usupi.org/sysad/207.html

余談

ググると、こちらのgemの情報もたくさん出てきたが、
assetsのログを出さないために、
config.assets.quiet = true
を設定するとエラーが起きるため、使用を断念した。

gem
http://github.com/seattlerb/sysloglogger

Gemfile
gem 'SyslogLogger'

エラーになる設定

config/environments/production.rb
Rails.application.configure do
# *snip*

  config.logger = Logger::Syslog.new
  config.logger = Logger::Syslog.new('appname', Syslog::LOG_LOCAL7)

  # この設定がtrueだとエラーになる
  config.assets.quiet = true

# *snip*
end

エラー内容

#<NoMethodError: super: no superclass method `silence' for #<Syslog::Logger:0x007f74d6141098>>

参考:https://github.com/dwbutler/logstash-logger/issues/86

ログローテートの設定はこちら

任意のログをlogrotateを使って管理する

参考

今すぐ実践!Linuxシステム管理

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?