৩.১ রেলের রুবিতে সম্পদ পাইপলাইন (স্প্রোকেট) বার্তাগুলি লগিং আমি কীভাবে অক্ষম করতে পারি?


378

স্প্রকেটগুলি রুবে অন রেল ৩.১ (আরসি 1) এর অধীনে ডিফল্টরূপে (দেব) লগের মধ্যে বেশ ভার্জোজ রয়েছে:

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বা এর সাথে একটি কনফিগার লাইন যুক্ত করে লগিংয়ের ভার্বোসিটি অক্ষম বা হ্রাস করার একটি পরিষ্কার উপায় রয়েছে ।development.rbconfig.active_record.logger = nil


কেউ এই সম্পর্কে একটি বাগ রিপোর্ট করেছেন: # 2639 । এখনও 9/2 হিসাবে "খোলা"।
istvanp

14
এই প্রশ্নের জন্য গৃহীত উত্তর পরিবর্তন বা আপডেট করা উচিত। 3.2 রেলগুলিতে আপনি কেবল আপনার বিকাশ.আরবি রাখতে পারেন config.assets.debug = false
স্টুয়ার্ট জনসন

7
@ স্টিওয়ার্ট জনসন - 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

আপডেট হয়েছে: এটি এখন রুবেল অন রেল ৩.২ এর জন্যও কাজ করে (পূর্ববর্তী প্রচেষ্টা স্থির হয়েছে before_dispatch, এবং এখন আমরা এর callপরিবর্তে রুট র‌্যাকের জন্য যাচ্ছি )

আপডেট: একটি সঠিক র্যাক মিডলওয়্যার সমাধান (ভঙ্গুর পরিবর্তে alias_method_chain) @ ম্যাক্রনয়ায়ার https://github.com/rails/rails/issues/2639#issuecomment-6591735


3
Ails.২.১ এর কারাগার অনুসারে, এই টানাগুলি একাই স্প্রোকেট লগিংয়ের জন্য ঝাঁকুনি দেয় না এবং চুনকিয়েটের ফাইলটি এখনও দরকার।
আইএএমএনএন

5
প্রকৃতপক্ষে. এই ফাইলটির মতো শব্দগুলি সর্বদা প্রয়োজন config.assets.loggerহবে কারণ মিথ্যাতে সেট করা কেবল স্প্রোকেটস আউটপুটগুলিকে নিঃশব্দ করে দেয়। এটি অ্যাকশন প্যাকের অনুরোধগুলি / প্রতিক্রিয়াগুলিকে স্তব্ধ করে দেয়, যা রেল দেবগণ বলেছিলেন যে তারা বিশেষ ক্ষেত্রে চুপ করে যাবেন না
বেন ক্রিগার

32
UHM। আপনার ঠিক এটি রেল কোর এ প্রবেশ করা উচিত। এটিকে
কনফিগারেশনগুলিতে

2
উইন্ডোজগুলিতে '/dev/null'' NUL'
ম্যাট

4
4.3.0 রেলগুলিতে আমার জন্য কাজ করে
সিরিয়াল ইঞ্জিন

189

Https://github.com/evrone/quiet_assets এ একবার দেখুন এবং এটি আপনার মণি ফাইলের মধ্যে অন্তর্ভুক্ত করুন।

অলসতার জন্য: gem 'quiet_assets', group: :development


6
দুর্দান্ত কাজ, তবে খুব দুঃখের বিষয় যে এর জন্য একটি পৃথক রত্ন প্রয়োজন।
অ্যাডাম স্পায়ারস

1
আমি মনে করি জোসে ভলিম এখানে সঠিক সিদ্ধান্ত নিয়েছে github.com/rails/rails/issues/2639 রেলগুলি সমস্ত আগত অনুরোধটি লগ করতে হবে এবং আমি তার সাথে একমত হই, আমি মনে করি যখন স্পারোকটস
যাত্রা করুন

5
gem 'quiet_assets'
অলসতার

52

Ails.২ রেল অন রুবির config.assets.logger = falseজন্য আপনার বিকাশ পরিবেশের কনফিগারেশন ফাইলটিতে যুক্ত করুন যা সাধারণত পাওয়া যায় config/environments/development.rb# 4512 দেখুন ।


প্রত্যাশা অনুযায়ী 4 বাড়াতে কাজ করে। এই কাজটি করার জন্য সার্ভারটি পুনরায় চালু করা দরকার।
ল্যাঙ্গাস্টেন গস্টেল

2
রেল 4.0.2 config.assets.logger = nilআমার জন্য কাজ করে
বাইটারুশিয়ান

4
রেল 4.0.4 config.assets.logger = nilআমার জন্য কাজ করে না
হেন্ডরিকবেক

28

দুটি জিনিস যথেষ্ট:

  1. config.assets.debug = false ভিতরে config/enviroments/development.rb
  2. rake assets:precompileনীচে @oma দ্বারা মন্তব্য দেখুন; এটি প্রয়োজন হয় না

এখানেই শেষ!


19
1. সঠিক। ধন্যবাদ! দয়া করে 2 নম্বর সরান, rake assets:precompileআমরা উন্নয়নে কিছু করতে চাই না
ওমা

মূল প্রশ্নটি পোস্ট করার সময় এটি সম্ভবত কার্যকর হয়নি যদিও এটি এখন কাজ করে (এবং, @ র্যাসের বক্তব্য অনুসারে, ইতিমধ্যে উইট 3.3.3) এবং এটি এখন গ্রহণযোগ্য উত্তর হওয়া উচিত।
রেডিওস্পিল

2
যেমনটি ইস্তানভ্যান্ট নীচে উল্লেখ করেছেন, যা এটি আপনার মনে হয় তা করে না। এটি কেবল সমস্ত জেএস এবং সিএসএস সম্পদকে একটি একক বৃহত ফাইলে সংকলন করে - এটি সম্পদের জন্য লগিং বন্ধ করে না।
ডেভিডগোলি


@ ডেভিডগোলি যা বলেছেন তাতে যুক্ত করে: config.assets.debug সম্পত্তি সম্পদকে নিয়ন্ত্রণ করে। এটি বন্ধ করা মানে ডিবাগ করা যেমন ব্রাউজার ব্যবহার করে জেএস এবং সিএসএস আরও কাজ হয়ে যাবে। নিঃশব্দ_সেটস এর মতো কিছু লগিংয়ের জন্য ঝাঁকুনি খায় আপনার সম্পদ টগল করতে হবে না de
জনসিপ

27

অবশেষে, এটি হবে config.assets.logger = nil, কিন্তু সেই অংশটি বর্তমানে মাস্টারের উপর জড়িত (এখনও করা হয়নি)।


5
R.১.৩. রেলগুলিতেও আমার পক্ষে কাজ করে না। @ যিনিউর: আপনি কি নিশ্চিত যে এটি আপনার পক্ষে কাজ করে? টিম যেমন বলেছে, # 2639 এখনও খোলা আছে এবং আমি কোনও সমাধানের ইস্যুতে কোনও ইঙ্গিত দেখছি না (উভয় রেফারেন্সযুক্ত পুল অনুরোধ প্রত্যাখাত হয়েছিল)।
অ্যাডাম স্পায়ার্স

এটি এই পর্যায় হিসাবে কার্যকর করা হবে না। github.com/rails/rails/issues/4569
23inhouse

লিঙ্ক অনুসারে @ অ্যাডামস্পিয়ার্স : github.com/rails/rails/pull/3795#issuecomment-3549669 " রেলগুলি নির্দিষ্ট রুটগুলিতে লগ না করার জন্য লগার বা লগার সম্পর্কিত কোনও মিডলওয়্যারের বিশেষ মামলা করবে না"
23 ইনিউজ

3
হতাশাজনক। 4 টি রেল এখনও সহজেই সম্পত্তি লগিং অক্ষম করতে পারে না।
টম রসি

1
আমি রেলগুলি ৪.২ ব্যবহার করছি development.rb, এটি আমার মধ্যে রাখুন এবং এটি সম্পদের লগিংকে অক্ষম করে।
জ্যাক 19

12

আমি জানি এটি একটি কুৎসিত এবং অস্থায়ী সমাধান, তবে আমি এটি ব্যবহার করি:

লেজ -f লগ / विकास.লগ | গ্রেপ -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 সংশোধিত হয়নি (0 মিমি)

তবে এর মতো লগগুলি হয় না

GET "/assets/jquery.isotope.js?body=1" শুরু করেছেন 127.0.0.1 এ 2012-01-20 23:16:46 -0500 এ



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.assets.debug = true

এতে স্যুইচ করুন falseএবং বেশিরভাগ সম্পদ লোড আউটপুট চলে যাবে। আমার সিস্টেমে অ্যাপ্লিকেশন CSS এবং .js এর জন্য কেবল দুটি অনুরোধ থাকবে।


3
সহজ ডিবাগিংয়ের জন্য সত্য হিসাবে সেট করা থাকলে সেটিংটি আপনাকে কেবল স্টাইলশিট এবং জাভাস্ক্রিপ্টকে পৃথক ফাইলগুলিতে ভাঙ্গতে দেয়। মিথ্যাতে সেট করা হলে (ডিফল্ট) এটি সমস্তকে একটি বড় ফাইলে বান্ডিল করে। সুতরাং এটি প্রকৃতপক্ষে ডিবাগ আউটপুট হ্রাস করে না তবে উদাহরণস্বরূপ আপনার যদি চিত্র থাকে তবে সেগুলি মোটেই ক্ষতিগ্রস্থ হয় না। অফিসিয়াল গাইড তথ্য এখানে
istvanp

1
আমি দেখি. যে পরিষ্কার করার জন্য ধন্যবাদ। তবে আমি এই পরিবর্তনশীলটির সেটিংটি পরিবর্তন করি নি, তাই আমার ডিফল্ট ছিল true
টেক্যাব

5

ফাইল কনফিগারেশন / পরিবেশ / উন্নয়ন.rb এ দয়া করে যুক্ত করুন:

config.assets.debug = false

config.assets.logger = false

2

জয়ের জন্য লোগরেজ - এটি রেলকে বিরক্তিকর লগার ডিফল্ট বাক্সের বাইরে মেরে ফেলে (যেমন লগিং সম্পদ, আংশিক রেন্ডারিং লগিং) এবং আপনি নির্দিষ্ট আইটেমগুলি যুক্ত / সরাতে চান তবে এটি কাস্টমাইজযোগ্য।


0

পূর্বে উল্লিখিত সংযুক্ত সমাধান সাহায্য করে:

https://github.com/evrone/quiet_assets

নীচের মতো এটিও আমার পক্ষে ভাল কাজ করছে:

৩.১ (কেবল) (৩.২ ব্রেক আগে_পরিচ)

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.