Sha256: d6b6668d64e57944286be754c6bb06c0743a9635be75c5c6c9487fcd3cd8d80b

Contents?: true

Size: 1.85 KB

Versions: 32

Compression:

Stored size: 1.85 KB

Contents

#!/usr/bin/ruby1.8 -w
#
# Copyright:: Copyright 2009 Google Inc.
# Original Author:: Ryan Brown (mailto:ribrdb@google.com)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# Switches the Merb Logger class to use the Google App Engine logging API.

require 'merb-core/logger'
require 'appengine-apis/apiproxy.rb'

module Merb  # :nodoc:
  
  # Modifies the Merb Logger class to save logs using the Logging API
  # instead of writing directly to a stream.
  class Logger
    def <<(string = nil)
      AppEngine::ApiProxy.log(
          AppEngine::ApiProxy::LogRecord::Level::info, string)
    end
    alias :push :<<

    # Re-generate the logging methods for Merb.logger for each log level.
    Levels.each_pair do |name, number|
      class_eval <<-LEVELMETHODS, __FILE__, __LINE__

      # Appends a message to the log if the log level is at least as high as
      # the log level of the logger.
      #
      # ==== Parameters
      # string<String>:: The message to be logged. Defaults to nil.
      #
      # ==== Returns
      # self:: The logger object for chaining.
      def #{name}(message = nil)
        if #{number} >= level
          message = block_given? ? yield : message
          AppEngine::ApiProxy.log(
              AppEngine::ApiProxy::LogRecord::Level::#{name}, message)
        end
        self
      end
      alias :#{name}! :#{name}
      LEVELMETHODS
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
appengine-apis-0.0.35 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.34 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.33 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.32 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.31 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.30 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.29 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.28 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.27 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.25 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.24 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.23 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.22 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.21 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.20 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.19 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.18 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.17 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.16 lib/appengine-apis/merb-logger.rb
appengine-apis-0.0.15 lib/appengine-apis/merb-logger.rb