有一种方法Rake::SprocketsTask#log_level=
(由sprockets-3.7.1/lib/rake/sprocketstask.rb
定义),但如何调用它?
要更改记录器,您可以定义自己的预编译任务和 设置logger =
Rake::SprocketsTask.new do |t| t.logger = Logger.new("log/assets.log") end
我尝试过(使用log_level
)并返回SprocketsTask
个实例,但如何替换assets:precompile
任务?
我想将log_level
任务的assets:precompile
设置得更安静,比如:warn
。
答案 0 :(得分:0)
一些反馈,logger
是班级attribute
的{{1}}。
SprocketsTask
我在api中找不到相关信息,Rails Guide中有关于rails使用的Log4r记录器的一些很好的解释。
这是您所包含的代码的解释
Rails使用ActiveSupport :: Logger类来编写日志信息。其他记录器,如Log4r,也可以替代。
您可以在config / application.rb或任何其他环境文件中指定备用记录器,例如:
require 'logger'
module Rake
# Simple Sprockets compilation Rake task macro.
#
# Rake::SprocketsTask.new do |t|
# t.environment = Sprockets::Environment.new
# t.output = "./public/assets"
# t.assets = %w( application.js application.css )
# end
#
class SprocketsTask < Rake::TaskLib
# Logger to use during rake tasks. Defaults to using stderr.
#
# t.logger = Logger.new($stdout)
#
attr_accessor :logger
该命令默认在Rails.root / log /
下创建一个日志文件您需要的信息是log levels
当记录某些内容时,如果消息的日志级别等于或高于配置的日志级别,则会将其打印到相应的日志中。如果您想知道当前的日志级别,可以调用
config.logger = Logger.new(STDOUT) config.logger = Log4r::Logger.new("Application Log")
方法。可用的日志级别为:
Rails.logger.level
,:debug
,:info
,:warn
,:error
和:fatal
,对应于日志级别编号分别为0到5。要更改默认日志级别,请使用
:unknown
这是config.log_level = :warn # In any environment initializer, or
Rails.logger.level = 0 # at any time
类。
它Log4r::Logger.rb
attr_reader
,:level
设置def initizialize
。
module Log4r
# See log4r/logger.rb
class Logger
attr_reader :name, :fullname, :path, :level, :parent
attr_reader :additive, :trace, :outputters
# Logger requires a name. The last 3 parameters are:
#
# level:: Do I have a level? (Otherwise, I'll inherit my parent's)
# additive:: Am I additive?
# trace:: Do I record the execution trace? (slows things a wee bit)
def initialize(_fullname, _level=nil, _additive=true, _trace=false)
# validation
raise ArgumentError, "Logger must have a name", caller if _fullname.nil?
Log4rTools.validate_level(_level) unless _level.nil?
validate_name(_fullname)
# create the logger
@fullname = _fullname
@outputters = []
@additive = _additive
deal_with_inheritance(_level)
LoggerFactory.define_methods(self)
self.trace = _trace
Repository[@fullname] = self
end
您可以通过执行以下操作来设置级别:
Log4r::Logger.new('Assets Log', :warn)
所以我相信t.logger.level = 2
应该将level
设置为:warn
Rake::SprocketsTask.new do |t|
t.logger = Logger.new("log/assets.log")
t.logger.level = 2
end
:debug
,:info
,:warn
,:error
,:fatal
和:unknown
,对应于从0到最高的日志级别编号5,分别。
这也有效,因为Log4r::Logger
有一个方法def level=(_level)
来重新设置level
属性。
# Set the logger level dynamically. Does not affect children.
def level=(_level)
Log4rTools.validate_level(_level)
@level = _level
LoggerFactory.define_methods(self)
Logger.log_internal {"Logger '#{@fullname}' set to #{LNAMES[@level]}"}
@level
end