115 lines
4.2 KiB
Ruby
115 lines
4.2 KiB
Ruby
|
|
Logging::Rails.configure do |config|
|
|
|
|
# Objects will be converted to strings using the :format_as method.
|
|
Logging.format_as :inspect
|
|
|
|
# The default layout used by the appenders.
|
|
layout = Logging.layouts.pattern(:pattern => '[%d] %-5l %c : %m\n')
|
|
|
|
# Setup a color scheme called 'bright' than can be used to add color codes
|
|
# to the pattern layout. Color schemes should only be used with appenders
|
|
# that write to STDOUT or STDERR; inserting terminal color codes into a file
|
|
# is generally considered bad form.
|
|
#
|
|
Logging.color_scheme( 'bright',
|
|
:levels => {
|
|
:info => :green,
|
|
:warn => :yellow,
|
|
:error => :red,
|
|
:fatal => [:white, :on_red]
|
|
},
|
|
:date => :blue,
|
|
:logger => :cyan,
|
|
:message => :magenta
|
|
)
|
|
|
|
# Configure an appender that will write log events to STDOUT. A colorized
|
|
# pattern layout is used to format the log events into strings before
|
|
# writing.
|
|
#
|
|
Logging.appenders.stdout( 'stdout',
|
|
:auto_flushing => true,
|
|
:layout => Logging.layouts.pattern(
|
|
:pattern => '[%d] %-5l %c : %m\n',
|
|
:color_scheme => 'bright'
|
|
)
|
|
) if config.log_to.include? 'stdout'
|
|
|
|
# Configure an appender that will write log events to a file. The file will
|
|
# be rolled on a daily basis, and the past 7 rolled files will be kept.
|
|
# Older files will be deleted. The default pattern layout is used when
|
|
# formatting log events into strings.
|
|
#
|
|
Logging.appenders.rolling_file( 'file',
|
|
:filename => config.paths['log'].first,
|
|
:keep => 7,
|
|
:age => 'daily',
|
|
:truncate => false,
|
|
:auto_flushing => true,
|
|
:layout => layout
|
|
) if config.log_to.include? 'file'
|
|
|
|
# Configure an appender that will send an email for "error" and "fatal" log
|
|
# events. All other log events will be ignored. Furthermore, log events will
|
|
# be buffered for one minute (or 200 events) before an email is sent. This
|
|
# is done to prevent a flood of messages.
|
|
#
|
|
Logging.appenders.email( 'email',
|
|
:from => "server@#{config.action_mailer.smtp_settings[:domain]}",
|
|
:to => "developers@#{config.action_mailer.smtp_settings[:domain]}",
|
|
:subject => "Rails Error [#{%x(uname -n).strip}]",
|
|
:server => config.action_mailer.smtp_settings[:address],
|
|
:domain => config.action_mailer.smtp_settings[:domain],
|
|
:acct => config.action_mailer.smtp_settings[:user_name],
|
|
:passwd => config.action_mailer.smtp_settings[:password],
|
|
:authtype => config.action_mailer.smtp_settings[:authentication],
|
|
|
|
:auto_flushing => 200, # send an email after 200 messages have been buffered
|
|
:flush_period => 60, # send an email after one minute
|
|
:level => :error, # only process log events that are "error" or "fatal"
|
|
:layout => layout
|
|
) if config.log_to.include? 'email'
|
|
|
|
# Setup the root logger with the Rails log level and the desired set of
|
|
# appenders. The list of appenders to use should be set in the environment
|
|
# specific configuration file.
|
|
#
|
|
# For example, in a production application you would not want to log to
|
|
# STDOUT, but you would want to send an email for "error" and "fatal"
|
|
# messages:
|
|
#
|
|
# => config/environments/production.rb
|
|
#
|
|
# config.log_to = %w[file email]
|
|
#
|
|
# In development you would want to log to STDOUT and possibly to a file:
|
|
#
|
|
# => config/environments/development.rb
|
|
#
|
|
# config.log_to = %w[stdout file]
|
|
#
|
|
Logging.logger.root.level = config.log_level
|
|
Logging.logger.root.appenders = config.log_to unless config.log_to.empty?
|
|
Logging.logger['ActiveSupport::Cache::FileStore'].level = :info
|
|
Logging.logger['ActiveSupport::OrderedOptions'].level = :warn
|
|
Logging.logger['InfluxDB'].level = :warn
|
|
|
|
# Under Phusion Passenger smart spawning, we need to reopen all IO streams
|
|
# after workers have forked.
|
|
#
|
|
# The rolling file appender uses shared file locks to ensure that only one
|
|
# process will roll the log file. Each process writing to the file must have
|
|
# its own open file descriptor for `flock` to function properly. Reopening
|
|
# the file descriptors after forking ensures that each worker has a unique
|
|
# file descriptor.
|
|
#
|
|
if defined?(PhusionPassenger)
|
|
PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
|
Logging.reopen if forked
|
|
end
|
|
end
|
|
|
|
end
|
|
|