2017-09-27 2 views
0

Ich habe eine ausführbare Datei in meiner Schiene app, bin/log_data. In dieser Datei, um den Zugang zu Rails.logger zu haben, ich habe die folgenden Dateien benötigen:Wie Rails.logger in einer ausführbaren Datei geladen werden?

APP_PATH = File.expand_path('../config/application', __dir__) 
require 'rails/commands' 

Dies lädt die gesamte Umgebung Schienen in diesem Prozess, der bin/log_data läuft, und ich denke, der Ansatz ein bisschen plump ist . Kann jemand mit mir teilen, wie ich gerade Rails.logger laden würde, damit ich `Rails.logger.info tun kann ('etwas relativ wichtig zu log')?

Auch nur einige Hintergrundinformationen, möchte ich Benutzer Rails.logger, da die Ausgabe zu log/development.log geht, die für wichtig ist, was ich will in meinem Heroku Protokolle werden loggt gesehen, als ich Schwanz meine App.

Antwort

0

Sie können eine ActiveSupport::Logger Instanz gerade erstellen:

require 'active_support/logger' 
APP_PATH = File.expand_path('../config/application', __dir__) 
rails_env = ENV["RAILS_ENV"] || "development" 
logger = ActiveSupport::Logger.new(APP_PATH + "/logs/#{rails_env}.log") 

Wenn Sie es wirklich als Rails.logger nennen wollen, ein Modul erstellen:

require 'active_support/logger' 
require 'active_support/string_inquirer' 
APP_PATH = File.expand_path('../config/application', __dir__) 
logger = ActiveSupport::Logger.new(APP_PATH + "/logs/#{rails_env}.log") 

module Rails 
    class << self 
    attr_reader :logger 
    attr_reader :env 
    end 
    self.env = ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || "development") 
    self.logger = ActiveSupport::Logger.new(APP_PATH.join("logs", "#{self.env}.log")) 
end 

Beachten Sie, dass es nicht die exacts gleiche Einstellung haben wie Der Rails-Logger, wenn es um Log-Level und Formatierung geht, die nur durch das Starten der Rails-App erreicht werden können.

Verwandte Themen