मैं रूबी 3.1 पर रूबी में संपत्ति पाइपलाइन (sprockets) संदेशों के लॉगिंग को कैसे अक्षम कर सकता हूं?


378

रूबी 3.1 (RC1) पर रूबी के तहत डिफ़ॉल्ट रूप से (देव) लॉग इन करने के लिए Sprockets काफी क्रियात्मक हो जाती है:

Started GET "/assets/application.css" for 127.0.0.1 at 2011-06-10 17:30:45 -0400
Compiled app/assets/stylesheets/application.css.scss  (5ms)  (pid 6303)


Started GET "/assets/application.js" for 127.0.0.1 at 2011-06-10 17:30:45 -0400
Compiled app/assets/stylesheets/default.css.scss  (15ms)  (pid 6303)

...
Started GET "/assets/default/header_bg.gif" for 127.0.0.1 at 2011-06-10 17:30:45 -0400
Served asset /default/header_logo.gif - 304 Not Modified  (7ms)  (pid 6303)
Served asset /default/header_bg.gif - 304 Not Modified  (0ms)  (pid 6246)
Served asset /default/footer_bg.gif - 304 Not Modified  (49ms)  (pid 6236)
...

मैं या तो वर्बोसिटी के स्तर को कम करना चाहता हूं या इसे पूरी तरह से अक्षम करना चाहता हूं।

मैं मान रहा हूँ कि निष्क्रिय करने या लॉग करने की क्रिया को निष्क्रिय करने या कम करने के लिए एक साफ तरीका है, जिसमें environment.rbया तो ActiveRecord SQL स्टेटमेंट को साइलेंट किया जाता है।development.rbconfig.active_record.logger = nil


किसी ने इस बारे में एक बग की सूचना दी: # 2639 । अभी भी 9/2 के रूप में "खुला"।
istvanp

14
इस प्रश्न के लिए स्वीकृत उत्तर को परिवर्तित या अद्यतन किया जाना चाहिए। रेल 3.2 में आप सिर्फ config.assets.debug = falseअपने विकास में डाल सकते हैं ।
स्टीवर्ट जॉनसन

7
@StewartJohnson - config.assets.debug = falseएक ही फ़ाइल में संपत्ति को सम्‍मिलित करेगा- विकास में अधिकांश लोग जो नहीं चाहते हैं
यारिन

जवाबों:


382

में निम्नलिखित कोड रखें config/initializers/quiet_assets.rb

if Rails.env.development?
  Rails.application.assets.try(:logger=, Logger.new('/dev/null'))
  Rails::Rack::Logger.class_eval do
    def call_with_quiet_assets(env)
      previous_level = Rails.logger.level
      Rails.logger.level = Logger::ERROR if env['PATH_INFO'] =~ %r{^/assets/}
      call_without_quiet_assets(env)
    ensure
      Rails.logger.level = previous_level
    end
    alias_method_chain :call, :quiet_assets
  end
end

अपडेट किया गया: यह अब रूबी 3.2 पर रेल्स के लिए भी काम करता है (पिछले प्रयास को ठीक करता है before_dispatch, और अब हम callइसके बजाय रूट रैक के लिए जा रहे हैं )

अपडेट: alias_method_chain@macournoyer https://github.com/rails/rails/issues/2639#issuecomment-6591735 से एक उचित रैक मिडलवेयर सॉल्यूशन (नाजुक के बजाय )


3
रेल 3.2.1 के रूप में, जो लोग अकेले खींचते हैं वे स्प्रोकेट लॉगिंग को स्क्वीच नहीं करते हैं और चॉन्केट की फाइल अभी भी आवश्यक है।
आइएमएनएन

5
वास्तव में। इस फ़ाइल की तरह लगता है हमेशा की जरूरत होगी, के रूप config.assets.loggerमें झूठी करने के लिए सेटिंग केवल चुप्पी क्या Sprockets outputs होगा। यह साइलेंस एक्शन पैक अनुरोध / प्रतिक्रिया है, जो कुछ ऐसा है जो रेल देव ने कहा है कि वे विशेष मामलों के लिए चुप रहने का इरादा नहीं रखते हैं
बेन क्रैगर

32
uhm। आपको बस इसे रेल कोर में लाना चाहिए। इसे config.assets
jsharpe

2
खिड़कियों पर की जगह '/dev/null'के साथ ' NUL'
मैट

4
मेरे लिए काम करता है रेल 4.2.0
सीरियल इंजन

189

Https://github.com/evrone/quiet_assets पर एक नज़र डालें और इसे अपनी मणि फ़ाइल में शामिल करें।

आलसी के लिए: gem 'quiet_assets', group: :development


6
महान काम, लेकिन बहुत दुख की बात है कि इसके लिए एक अलग रत्न की आवश्यकता है।
एडम स्पियर्स

1
मुझे लगता है कि जोस Valim सही फैसला यहां की गईं github.com/rails/rails/issues/2639 रेल सभी आने वाली अनुरोध लॉग इन करने की है और मुझे लगता है कि से सहमत हैं, मुझे लगता है कि हम इस भूमि के ऊपर से छुटकारा मिल सकता है जब sprockets स्रोत मानचित्र का समर्थन करेंगे github.com / sstephenson / sprockets / मुद्दों / 310
मार्ग

5
के लिए आलसी: gem 'quiet_assets'(पोस्ट :) में जोड़ने कृपया)
रीटो

52

रूबी 3.2 पर रूबी के लिए, config.assets.logger = falseअपने विकास पर्यावरण कॉन्फ़िगरेशन फ़ाइल में जोड़ें, जो आमतौर पर पाया जाता है config/environments/development.rb# 4512 देखें ।


अपेक्षानुसार ४ उठाएँ। यह काम करने के लिए सर्वर को पुनरारंभ करने की आवश्यकता है।
लैंगुस्टन गुस्टेल सेप

2
रेल्स 4.0.2 config.assets.logger = nilमेरे लिए काम करती है
बेटरियन

4
रेल 4.0.4 config.assets.logger = nilमेरे लिए काम नहीं करता है
hendrikbeck

28

दो चीजें पर्याप्त हैं:

  1. config.assets.debug = false में config/enviroments/development.rb
  2. rake assets:precompileनीचे @oma द्वारा टिप्पणी देखें; इसकी जरूरत नहीं है

बस इतना ही!


19
1. सही है। धन्यवाद! कृपया हटाने नहीं 2. rake assets:precompileकुछ हम विकास में क्या करना चाहते नहीं है
ओमा

हालांकि यह संभवत: उस समय काम नहीं आया जब मूल प्रश्न पोस्ट किया गया था, यह अब काम करता है (और, जैसा कि @Race ने कहा है, witl 3.2.3 पहले से ही है) और उसके बाद अब स्वीकृत जवाब होना चाहिए।
रेडियोस्पेल

2
जैसा कि istvanp नीचे इंगित करता है, यह वह नहीं करता है जो आपको लगता है कि यह करता है। यह केवल सभी जेएस और सीएसएस परिसंपत्तियों को एक बड़ी फाइल में संकलित करता है - यह परिसंपत्तियों के लिए लॉगिंग को बंद नहीं करता है।
दाविदगोली

2
यह वह सब है जो रेल में जरूरत है 4.2.2
14

@Davidgoli में जो कहा गया है उसे जोड़ते हुए: config.assets.debug एसेट कॉन्फैक्शन को नियंत्रित करता है। इसे बंद करने का अर्थ है कि ब्राउज़र का उपयोग करके JS और CSS जैसे डिबगिंग अधिक काम हो जाएगा। कुछ ऐसा है जैसे कि शांत_एसेट आपको लॉगिंग के बगैर कर देगा, क्योंकि आपके पास आस्तियों को टॉगल करना होगा। अच्छी तरह से डीबग करें।
जौनीपील

27

आखिरकार, यह होगा config.assets.logger = nil, लेकिन वह हिस्सा वर्तमान में मास्टर पर आधारित है (अभी तक नहीं किया गया है)।


5
मेरे लिए काम नहीं करता है या तो रेलगाड़ी 3.1.3 पर। @nessur: क्या आप सुनिश्चित हैं कि यह आपके लिए काम करता है? जैसा कि टिम कहते हैं, # 2639 अभी भी खुला है, और मुझे किसी भी फिक्स के उस मुद्दे में कोई संकेत नहीं दिखता है (दोनों संदर्भित पुल अनुरोधों को अस्वीकार कर दिया गया था)।
एडम स्पियर्स

इसे इस चरण के रूप में लागू नहीं किया जाएगा। github.com/rails/rails/issues/4569
23inhouse

@AdamSpiers इस लिंक के अनुसार: github.com/rails/rails/pull/3795#issuecomment-3549669 "रेल किसी भी
लकड़हारे या लकड़हारे

3
ओह। रेल 4 अभी भी आसानी से संपत्ति लॉगिंग को अक्षम नहीं कर सकती है।
टॉम रोसी

1
मैं रेल्स 4.2 का उपयोग कर रहा हूं, इसे मेरे अंदर डालें development.rb, और यह परिसंपत्तियों के लॉगिंग को अक्षम कर देता है।
जैक

12

मुझे पता है कि यह एक बदसूरत और अस्थायी समाधान है, लेकिन मैं इसका उपयोग करता हूं:

tail -f log / development.log | grep -vE 'संपत्ति'


9
यहाँ एक बेहतर एक है जो खाली लाइनों को भी हटाता है:tail -f log/development.log | grep -vE "(^\s*$|asset)"
istvanp

12

के उपयोग को लेकर कई लोग भ्रमित हैं config.assets.logger = false। यहाँ है कि यह क्या करता है और यह क्या नहीं करता है।

स्रोत प्रलेखन के अनुसार :

config.assets.loggerझूठी पर सेटिंग करने से सर्व किए गए एसेट लॉगिंग बंद हो जाएंगे।

हालांकि यह शायद वह नहीं है जो आप सोचते हैं कि यह है। यह केवल स्प्रोसेट 'सेवारत' लॉग को निष्क्रिय करता है , न कि रूबी ऑन रेल्स एक्शनपैक अनुरोध लॉग। रेल अनुरक्षक पर रूबी स्पष्ट रूप से यहाँ बताते हैं: https://github.com/rails/rails/issues/4569#issuecomment-3594500


लिंक से उदाहरण लेते हुए, इस तरह से लॉग अक्षम हैं:

सेवित संपत्ति /jquery.isotope.js - 304 संशोधित नहीं (0ms)

लेकिन इस तरह के लॉग नहीं हैं

2012-01-20 23:16:46 -0500 पर 127.0.0.1 के लिए GET "/assets/jquery.isotope.js?body=1" शुरू किया


10
config.assets.quiet = true

यह जाने का नवीनतम तरीका है।


पटरियों 5 में पूरी तरह से काम करता है। बस इस में development.rb
डुबकी

डिबग के साथ युग्मित, मेरी सभी जरूरतों को रेल में हल नहीं करता है 5.
पिसिस

7

उपयोग:

Rails.application.assets.logger = Logger.new(RUBY_PLATFORM =~ /(win|w)32$/ ? "NUL" : "/dev/null")
Rails::Rack::Logger.class_eval do
  def call_with_quiet_assets(env)
    previous_level = Rails.logger.level
    Rails.logger.level = Logger::ERROR if env['PATH_INFO'].index("/assets/") == 0
    call_without_quiet_assets(env).tap do
      Rails.logger.level = previous_level
    end
  end
  alias_method_chain :call, :quiet_assets
end

यह एक ही कोड चोंच है । मैंने इसे विंडोज के तहत भी काम करने के लिए शामिल किया।


7

फ़ाइल विकास में। Config / वातावरण में आप लाइन मिल जाएगा config.assets.debug = true

स्विच करें कि falseऔर अधिकांश एसेट लोड आउटपुट चला जाएगा। मेरे सिस्टम पर Application.css और .js के लिए केवल दो अनुरोध हैं, बने रहें।


3
यह सेटिंग केवल आपको स्टाइलशीट और जावास्क्रिप्ट को अलग-अलग फाइलों में तोड़ने की अनुमति देती है जब आसान डिबगिंग के लिए सही पर सेट किया जाता है। जब इसे गलत (डिफ़ॉल्ट) पर सेट किया जाता है, तो यह उन सभी को एक बड़ी फ़ाइल में बंडल करता है। तो यह वास्तव में डिबग आउटपुट को कम करता है लेकिन अगर आपके पास उदाहरण के लिए चित्र हैं, तो वे बिल्कुल प्रभावित नहीं होते हैं। आधिकारिक गाइड जानकारी यहाँ
istvanp

1
समझा। इसे साफ करने के लिए धन्यवाद। लेकिन मैंने इस चर की सेटिंग को नहीं बदला, इसलिए मेरी डिफ़ॉल्ट थी true
TKAB

5

फ़ाइल विन्यास / वातावरण / विकास में। कृपया जोड़ें:

config.assets.debug = false

config.assets.logger = false

2

जीत के लिए लॉगरेज - यह रूबी को रेल के कष्टप्रद लकड़हारा डिफॉल्ट को बॉक्स से बाहर निकालता है (जैसे कि लॉगिंग एसेट्स, आंशिक रेंडर लॉगिंग) और यदि आप विशिष्ट आइटम जोड़ना / हटाना चाहते हैं तो अनुकूलन योग्य है।


0

पहले उल्लिखित लिंक से मदद मिलती है:

https://github.com/evrone/quiet_assets

नीचे के रूप में भी, यह मेरे लिए ठीक काम कर रहा है:

3.1 (केवल) (3.2 ब्रेक पहले_डिपचैट)

app\config\initializers\quiet_assets.rb

Rails.application.assets.logger = Logger.new('/dev/null')
Rails::Rack::Logger.class_eval do
  def before_dispatch_with_quiet_assets(env)
    before_dispatch_without_quiet_assets(env) unless env['PATH_INFO'].index("/assets/") == 0
  end
  alias_method_chain :before_dispatch, :quiet_assets
end
3.2 Rails - Rack root tap approach
app\config\initializers\quiet_assets.rb

Rails.application.assets.logger = Logger.new('/dev/null')
Rails::Rack::Logger.class_eval do
  def call_with_quiet_assets(env)
    previous_level = Rails.logger.level
    Rails.logger.level = Logger::ERROR if env['PATH_INFO'].index("/assets/") == 0
    call_without_quiet_assets(env).tap do
      Rails.logger.level = previous_level
    end
  end
  alias_method_chain :call, :quiet_assets
end

-1

कॉन्फ़िगर / वातावरण config.log_level = :errorमें .rb फ़ाइलों को आप बदलना चाहते हैं। यह लॉग सेटिंग्स को केवल त्रुटि में बदल देगा।


दुर्भाग्य से नहीं, क्योंकि मैं ज्यादातर लॉग का उपयोग अनुरोध और एसक्यूएल डेटा को देखने के लिए करता हूं जो डिबग स्तर पर हैं। एसेट संदेश सूचना स्तर के होते हैं (जो डिबग स्तर से कम होता है) इसलिए इसका कोई उपयोग नहीं हो रहा है जो मुझे उस सेटिंग से चाहिए।
istvanp

2
यह एक अच्छा विचार नहीं है। यह अन्य सूचना स्तर के संदेश छिपाएगा जो आप अभी भी लॉगिंग करना चाहते हैं।
ifightcrime
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.