Skip to content
Extraits de code Groupes Projets
logging.rb 4,41 ko
Newer Older
  • Learn to ignore specific revisions
  • Logging::Rails.configure do |config|
      # Configure the Logging framework with the default log levels
      Logging.init %w(debug info warn error fatal)
    
      # Objects will be converted to strings using the :inspect method.
      Logging.format_as :inspect
    
      # The default layout used by the appenders.
    
      pattern = "[%d] %-5l PID-%p TID-%t %c: %m\n"
      layout = Logging.layouts.pattern(pattern: pattern)
    
    
      # 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: %i(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(
    
                                 color_scheme: "bright"
                               )
                              ) if config.log_to.include? "stdout"
    
    
      if config.log_to.include? "file"
        # Configure an appender that will write log events to a file.
        if AppConfig.environment.logging.logrotate.enable?
          # The file will be rolled on a daily basis, and the rolled files will be kept
          # the configured number of days. 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:          AppConfig.environment.logging.logrotate.days.to_i,
                                         age:           "daily",
                                         truncate:      false,
                                         auto_flushing: true,
                                         layout:        layout
                                        )
        else
          # No file rolling, use logrotate to roll the logfile.
          Logging.appenders.file("file",
                                 filename:      config.paths["log"].first,
                                 truncate:      false,
                                 auto_flushing: true,
                                 layout:        layout
                                )
        end
      end
    
    
      # 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.appenders = config.log_to unless config.log_to.empty?
    
    
      # Default log-level (development=debug, production=info)
      Logging.logger.root.level = config.log_level
    
      # log-levels from the diaspora.yml for SQL and federation debug-logging
      Logging.logger[ActiveRecord::Base].level = AppConfig.environment.logging.debug.sql? ? :debug : :info
      Logging.logger["XMLLogger"].level = AppConfig.environment.logging.debug.federation? ? :debug : :info
    
    
      # 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