lib/timber/config.rb in timber-1.1.14 vs lib/timber/config.rb in timber-2.0.0
- old
+ new
@@ -1,18 +1,59 @@
require "singleton"
module Timber
- # Interface for configuring Timber.
+ # Interface for settings and reading Timber configuration.
#
- # @note If using rails this will be installed in the `config` object via `config.timber`.
+ # You can override any configuration supplied here by simply setting it:
+ #
+ # # Rails
+ # config.timber.api_key = "my api key"
+ #
+ # # Everything else
+ # Timber::Config.instance.api_key = "my api key"
+ #
+ # If a value is not explicity set, the environment is checked for it's associated
+ # environment variable. If that is not set, a reasonable default will be chosen. Each
+ # method documents this.
class Config
+ class NoLoggerError < StandardError; end
+
+ FORM_URL_ENCODED_CONTENT_TYPE = "application/x-www-form-urlencoded".freeze
+ JSON_CONTENT_TYPE = "application/json".freeze
+
include Singleton
- attr_writer :logger
+ attr_writer :capture_http_bodies, :debug_logger, :log_formatter, :logger
- # Set a logger to view internal Timber library log message.
- # Useful for debugging. Defaults to `::Logger.new(nil)`.
+ def initialize
+ @capture_http_bodies = true
+ @capture_http_body_content_types = [FORM_URL_ENCODED_CONTENT_TYPE, JSON_CONTENT_TYPE]
+ end
+
+ # Enables and disables the capturing of HTTP bodies in `Events::HTTPServerRequest`,
+ # `HTTPClientRequest`, and `HTTPClientRespone`.
+ def capture_http_bodies?
+ @capture_http_bodies == true
+ end
+
+ # Limits HTTP body capturing to the listed content types. This must be an array.
+ def capture_http_body_content_types
+ @capture_http_body_content_types ||= []
+ end
+
+ # Set a debug_logger to view internal Timber library log message.
+ # Useful for debugging. Defaults to `nil`. If set, debug messages will be
+ # written to this logger.
+ def debug_logger
+ @debug_logger
+ end
+
+
+ # This is the logger Timber writes to. It should be set to your global
+ # logger to keep the logging destination consitent. Please see `delegate_logger_to`
+ # to delegate this call to another method. This is set to `Rails.logger`
+ # for rails.
def logger
- @logger ||= Logger.new(nil)
+ @logger || raise(NoLoggerError.new)
end
end
end
\ No newline at end of file