提交 f914454f 编写于 作者: D David Heinemeier Hansson

Add ActiveSupport::Logger#silence that works the same as the old Logger#silence extension

上级 e0176bf7
## Rails 4.0.0 (unreleased) ##
* Add ActiveSupport::Logger#silence that works the same as the old Logger#silence extension.
*DHH*
* Remove surrogate unicode character encoding from `ActiveSupport::JSON.encode`
The encoding scheme was broken for unicode characters outside the basic multilingual plane;
since json is assumed to be `UTF-8`, and we already force the encoding to `UTF-8`,
......
require 'active_support/core_ext/class/attribute_accessors'
require 'active_support/deprecation'
require 'active_support/logger_silence'
ActiveSupport::Deprecation.warn 'this file is deprecated and will be removed'
......@@ -31,27 +32,9 @@ def around_#{level}(before_message, after_message) # def around_debug(before_me
#
# logger.datetime_format = "%Y-%m-%d"
#
# Note: This logger is deprecated in favor of ActiveSupport::Logger
# Note: This logger is deprecated in favor of ActiveSupport::BufferedLogger
class Logger
##
# :singleton-method:
# Set to false to disable the silencer
cattr_accessor :silencer
self.silencer = true
# Silences the logger for the duration of the block.
def silence(temporary_level = Logger::ERROR)
if silencer
begin
old_logger_level, self.level = level, temporary_level
yield self
ensure
self.level = old_logger_level
end
else
yield self
end
end
include LoggerSilence
alias :old_datetime_format= :datetime_format=
# Logging date-time format (string passed to +strftime+). Ignored if the formatter
......
require 'active_support/core_ext/class/attribute_accessors'
require 'active_support/logger_silence'
require 'logger'
module ActiveSupport
class Logger < ::Logger
include LoggerSilence
# Broadcasts logs to multiple loggers.
def self.broadcast(logger) # :nodoc:
Module.new do
......
require 'active_support/concern'
module LoggerSilence
extend ActiveSupport::Concern
included do
cattr_accessor :silencer
self.silencer = true
end
# Silences the logger for the duration of the block.
def silence(temporary_level = Logger::ERROR)
if silencer
begin
old_logger_level, self.level = level, temporary_level
yield self
ensure
self.level = old_logger_level
end
else
yield self
end
end
end
\ No newline at end of file
......@@ -120,4 +120,14 @@ def test_buffer_multibyte
byte_string.force_encoding("ASCII-8BIT")
assert byte_string.include?(BYTE_STRING)
end
def test_silencing_everything_but_errors
@logger.silence do
@logger.debug "NOT THERE"
@logger.error "THIS IS HERE"
end
assert !@output.string.include?("NOT THERE")
assert @output.string.include?("THIS IS HERE")
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册