2009-07-20 18 views
9

मैं रेल पर रूबी में test.log और development.log पर स्वचालित सफाई कैसे सेट कर सकता हूं?रेल पर रूबी में लॉग रोटेशन/समाशोधन

क्या सर्वर प्रारंभ और परीक्षण चलाने पर स्वचालित रूप से dev और test log को हटाने की कोई सेटिंग है?

+0

"क्लीनअप" से आपका क्या मतलब है? – cakeforcerberus

उत्तर

19

ruby logger हाथ पर है यहाँ आप मदद करने के लिए है - और यह के लिए डिफ़ॉल्ट विकल्प हैं रोटेशन।

यहाँ मैं क्या करना है:

environment.rb में हम अपने ही लकड़हारा

new_logger = Logger.new(File.join(RAILS_ROOT, "log", "new_logger_#{RAILS_ENV}.log"), 'daily') 
new_logger.formatter = Logger::Formatter.new 

यह हमारे अपने वालों बनाता परिभाषित ... एक फ़ॉर्मेटर साथ पर्यावरण प्रति एक साथ (ताकि आप मिल टाइम स्टांप आदि), , और दैनिक घूर्णन।

फिर प्रारंभ ब्लॉक में हम इस लकड़हारा

Rails::Initializer.run do |config| 

    config.active_record.logger = new_logger 
    config.action_controller.logger = new_logger 

    #snip 
end 

उपयोग करने के लिए रेल पूछना आप स्पष्ट रूप से भी यहां बिजली देख सकते हैं active_record के लिए और action_controller के लिए अलग वालों के लिए - कभी कभी बहुत उपयोगी!

+4

नोट: रेल 3 में, आपका "इनटाइटलिसेशन ब्लॉक" विकास में है। आरबी, उत्पादन.आरबी, आदि – bcoughlan

+1

इसके अलावा, रेल 3 में आपके 'रेलस_आरओटी' 'Rails.root है ', और' RAILS_ENV' 'Rails.env' है। ऐसा लगता है कि रेल समुदाय अब कैप्स-लॉक में नहीं है? – Ziggy

2

इस ट्यूटोरियल में यहां देखें: Rotating Rails Log Files, मुझे नहीं पता कि यह आपकी समस्या का समाधान करता है, क्योंकि मैं अपनी लॉग फ़ाइलों के बारे में परवाह नहीं करता हूं।

हैप्पी मैं आपकी मदद कर रहा हूं!

+0

दुर्भाग्य से लॉग्रोटेट केवल यूनिक्स-जैसी प्रणालियों के लिए उपलब्ध है –

12

rake log:clear एक रेक कार्य है जो log/*.log से शून्य बाइट्स तक मेल खाने वाली सभी फ़ाइलों को छोटा करता है। आप इसे अपने सर्वर में कॉल कर सकते हैं और परीक्षण कार्यों को चला सकते हैं।

1

सभी स्क्रिप्ट/सर्वर है, सुनिश्चित करें कि आप की तरह कुछ करने के लिए इसे संशोधित कर सकता है im एक गहरे लाल रंग का स्क्रिप्ट है:

#!/usr/bin/env ruby 
require 'fileutils' 
FileUtils.rm File.join(File.dirname(__FILE__), log, *.log) 
require File.dirname(__FILE__) + '/../config/boot' 
require 'commands/server' 
0

प्रयोग करने के बाद, मैंने पाया कि रेल प्रारंभकर्ताओं को सही बिंदु पर लोड किया जाता है जहां आप मानक रूबी File कक्षा का उपयोग कर फ़ाइल को छोटा कर सकते हैं।

if MyRailsApp::Application.config.truncate_logs_on_server_start 
    # Making an assumption here that we're logging to a file... 
    File.open("log/#{ENV["RAILS_ENV"]}.log", "w") do |log_file| 
    log_file.puts("Initializer truncate_logs_on_server_start reset the log file") 
    log_file.puts 
    end 
end 

तुम बस तो application.rb और विभिन्न वातावरण में MyRailsApp::Application.config.truncate_logs_on_server_start निर्धारित करने की आवश्यकता: मैं config/initializers/truncate_logs_on_server_start.rbमें यह है।

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