Sha256: 70dfc425fdba3bbbee56705b148f798a2156c37650c543f8325012ba91d93413

Contents?: true

Size: 1.81 KB

Versions: 6

Compression:

Stored size: 1.81 KB

Contents

module Apache
  # Methods to handle logging configuration are defined here.
  #
  # For each of the four main log types (Custom, Error, Script, and Rewrite), the following two methods are created:
  #
  # * (type)_log: A non-rotated log file
  # * rotate_(type)_log: A rotated log file
  #
  # Non-rotated logs work as such:
  #  custom_log "/path/to/log/file.log", :common #=> CustomLog "/path/to/log/file.log" common
  #
  # Rotated logs work as such:
  #  rotate_custom_log "/path/to/log/file-%Y%m%d.log", 86400, :common
  #    #=> CustomLog "|/path/to/rotatelogs /path/to/log/file-%Y%m%d.jpg 86400" common
  #
  # Both variations check to make sure the log file diretory exists during generation.
  # The rotate_ variations need @rotate_logs_path set to work.
  module Logging
    [ :custom, :error, :script, :rewrite ].each do |type|
      class_eval <<-EOT
        def #{type}_log(*opts)
          handle_log :tag => '#{type.to_s.capitalize}Log',
                     :path => opts.first,
                     :additional_options => opts[1..-1]
        end

        def rotate_#{type}_log(*opts)
          handle_log :tag => '#{type.to_s.capitalize}Log',
                     :path => opts.first,
                     :real_path => rotatelogs(*opts[0..1]),
                     :additional_options => opts[2..-1]
        end
      EOT
    end

    def combined_log_format(name = 'combined')
      log_format '%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"', name.to_sym
    end

    def common_log_format(name = 'common')
      log_format '%h %l %u %t \"%r\" %>s %b', name.to_sym
    end

    private
      def handle_log(info)
        writable? (path = info[:path])

        real_path = (info[:real_path] || path).quoteize

        self << "#{info[:tag]} #{[real_path, info[:additional_options]].flatten * " "}"
      end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
apache-config-generator-0.2.7 lib/apache/logging.rb
apache-config-generator-0.2.6 lib/apache/logging.rb
apache-config-generator-0.2.5.1 lib/apache/logging.rb
apache-config-generator-0.2.4 lib/apache/logging.rb
apache-config-generator-0.2.3 lib/apache/logging.rb
apache-config-generator-0.2.2.1 lib/apache/logging.rb