Luc*_*mug 4 model-view-controller logging ruby-on-rails
我如何使这个方法在日志文件中输出一条黄线,可以从我的Rails应用程序中的任何地方(模型,控制器,视图)访问?
def my_log(text, file = "", line = "")
text.to_s.chomp.gsub!(/%/, "%%")
Rails.logger.debug(sprintf("\033[32m#{file}#{line}\033[0m\033[1m\033[33m#{text}\033[0m"))
end
Run Code Online (Sandbox Code Playgroud)
您可以在Kernel(不推荐)中定义它:
module Kernel
def my_log(..)
..
end
end
Run Code Online (Sandbox Code Playgroud)
...如果你真的希望它可以在任何地方使用
或者,将这样的东西放在lib/util.rb:
module Util
def self.my_log(..)
..
end
end
Run Code Online (Sandbox Code Playgroud)
...并确保require 'util'在你的config/application.rb,然后你可以在任何地方打电话:
Util.my_log(..)
Run Code Online (Sandbox Code Playgroud)
为什么不创建初始化程序并将此方法写入rails模块?
# config/initializers.rb
module Rails
def self.log_with_colour(message, level = :debug)
text.to_s.chomp.gsub!(/%/, "%%")
logger.send(level, sprintf("\033[32m#{__FILE__}#{__LINE__}\033[0m\033[1m\033[33m#{message}\033[0m"))
end
end
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您可以调用Rails.log_with_colour("hello")或Rails.log_with_colour("Hello again", :info)