2010-10-15 10 views
9

मुझे अपनी कंपनी के आंतरिक सॉफ़्टवेयर परिनियोजन प्रक्रिया के कारण मेरा रेल एप्लिकेशन का डिफ़ॉल्ट लॉग पथ बदलना है: मूल रूप से मेरे रेल ऐप केवल पढ़ने-योग्य स्थान पर समाप्त होता है, और मुझे "इसके लिए बनाए गए" निर्देशिका में लिखी गई लॉग फ़ाइलों की आवश्यकता होती है।रेल 3.0 के डिफ़ॉल्ट लॉग पथ को कैसे बदलें?

रेल 2.x के साथ हम अपने एफसीजीआई स्क्रिप्ट में कुछ काले जादू जोड़ते थे ताकि प्रोड पर तैनात किया जा सके। मेजबान:

class Rails::Configuration 
    def default_log_path 
    File.join(ENV['SOME_ENVIRONMENT_VAR'], "var/output/logs/rails.log") 
    end 
end 

हालांकि, विन्यास नहीं एक वर्ग अब रेल 2.3 में (यह एक मॉड्यूल है) है, और ऐसा लगता है मेरे लिए क्या कोई default_log_path वहाँ अब और साथ ही शामिल नहीं है ...

उत्तर

7

आपको बस अपने लॉगर को परिभाषित करने की आवश्यकता है

config.logger = ActiveSupport::BufferedLogger.new(File.join(ENV['SOME_ENVIRONMENT_VAR'], "var/output/logs/rails.log")) 

यह चाल रेल 2 के साथ भी काम करती है। और आप पर्यावरण द्वारा परिभाषित कर सकते हैं जहां आप वास्तव में अपनी लॉग फ़ाइल चाहते हैं। ,

config.paths.log = "/some/path/#{Rails.env}.log"

+2

वास्तव में रेल 3 (कम से कम) में config.log_path है जिसका मैंने उपयोग किया और पूरी तरह से काम किया। लेकिन मुझे आपके (वास्तव में बहुत समझदार) समाधान के बिना नहीं मिला होगा :) – Romain

+0

जैसा आप चाहते हैं। आप config.logger कॉन्फ़िगरेशन के साथ भी अपना लॉगर बदल सकते हैं। उदाहरण के द्वारा Syslogger का प्रयोग करें। उत्तर पर अपना पाया रखें। यह और बेहतर है। – shingara

+0

वास्तव में, क्या इन कॉन्फ़िगरेशन गुणों पर जानकारी का एक कैनोलिक स्रोत है? मुझे अभी तक एक व्यापक एक नहीं मिला है ... – Romain

6

config.log_path सेटिंग पदावनत किया गया है सुझाए गए समाधान अब है: : सर्वर # log_path।

LOG_PATH = "log/mylog.log" 

require 'rails/commands/server' 
module Rails 
    class Server 
    def log_path 
     LOG_PATH 
    end 
    end 
end 

class Application < Rails::Application 
    ... 
    config.paths['log'] = LOG_PATH 
    ... 
end 
+1

यह वाक्यविन्यास सही नहीं दिखता है। कॉन्फ़िगरेशन ब्लॉक में, यदि आप 'config.paths [' logfile '] =' ... '' करते हैं, तो यह सही लगता है लेकिन LogTailer अभी भी शिकायत करता है। – aceofspades

+2

मेरे लिए, 'config.paths [' log '] 'जैसा कि @aceofspades द्वारा सुझाया गया है (नीचे,' logfile' नहीं) ठीक काम किया। – iGEL

4

रेल 3.2.3 के रूप में लॉग पथ नाम भी Rails::Rack::LogTailer#initialize में परिभाषित किया गया है की तरह लग रहा है, और वह रेल से आता है: -

संबंधित मुद्दे