রেলের অন অ্যাপ্লিকেশন অ্যাপে রুবিতে লগ রোটেশন সক্ষম করার সর্বোত্তম উপায় কী?
এটি কি হোস্টিং সার্ভারে লোগ্রোটেট ব্যবহার করে বা অ্যাপ্লিকেশন থেকে লগার শুরু করার সময় ব্যবহারের জন্য বিকল্পগুলির একটি সেট রয়েছে?
রেলের অন অ্যাপ্লিকেশন অ্যাপে রুবিতে লগ রোটেশন সক্ষম করার সর্বোত্তম উপায় কী?
এটি কি হোস্টিং সার্ভারে লোগ্রোটেট ব্যবহার করে বা অ্যাপ্লিকেশন থেকে লগার শুরু করার সময় ব্যবহারের জন্য বিকল্পগুলির একটি সেট রয়েছে?
উত্তর:
সিস্টেম লগ সরঞ্জামগুলি ব্যবহার করতে, আপনি রেলগুলি কনফিগার করতে পারেন।
কনফিগারেশন / পরিবেশ / product.rb এর একটি উদাহরণ ।
# Use a different logger for distributed setups
config.logger = SyslogLogger.new
এইভাবে, আপনি সিসলগে লগইন করেন এবং লগগুলি ঘোরানোর জন্য ডিফল্ট লোগ্রোটেট সরঞ্জাম ব্যবহার করতে পারেন।
আর একটি বিকল্প হ'ল রেল দ্বারা রেখে যাওয়া লগগুলি তুলতে লোগ্রোটেটটি কনফিগার করা। উবুন্টু এবং ডেবিয়ান উপর হতে দেওয়া হতো, উদাহরণস্বরূপ, নামক একটি ফাইলে /etc/logrotate.d/rails_example_com
।
/path/to/rails.example.com/tmp/log/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
copytruncate
}
নীচে দেওয়া পরামর্শ অনুসারে copytruncate
, রেলগুলিতে রেল অ্যাপ্লিকেশনটি পুনরায় আরম্ভ করা এড়াতে, রেলগুলিতে এটি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।
সম্পাদনা করুন: "শেয়ারডস্ক্রিপ্টস / এন্ডস্প্রিপ্ট" অপসারণ করা হয়েছে কারণ এগুলি এখানে ব্যবহার করা হয় না এবং মন্তব্য অনুসারে সমস্যা সৃষ্টি করে। create 640 root adm
প্রস্তাবিত মন্তব্য অনুসারে সরানো হয়েছে।
logrotate
সমাধানটি ব্যবহার করে থাকেন তবে এটি @ অ্যামিট-স্যাক্সেনার জবাবটি মূল্যবান - নির্দেশের copytruncate
ওপরে ব্যবহারের পরামর্শ দেয় create
।
copytruncate
, create
, কোনো প্রভাব নেই তাই আপনি সম্ভবত আপনার উদাহরণ থেকে আমায় সরাতে হবে
su your_rails_user your_rails_group
আপনার লগ ফাইলগুলির মালিক এবং গোষ্ঠীর সাথে লাইন যুক্ত করতে হতে পারে (যেমন, রেল / যাত্রী প্রক্রিয়াটির) বা (সাম্প্রতিক সংস্করণ?) লোগ্রোটেট অনুমতি সম্পর্কে অভিযোগ করতে পারে।
আপনি যদি লোগ্রোটেট ব্যবহার করে থাকেন তবে আপনি /etc/logrotate.d/ ডিরেক্টরিতে একটি কনফ ফাইল ফাইল রেখে নীচের প্রদর্শিত বিকল্পগুলির মধ্যে যে কোনও একটি চয়ন করতে পারেন।
# Rotate Rails application logs based on file size
# Rotate log if file greater than 20 MB
/path/to/your/rails/applicaton/log/*.log {
size=20M
missingok
rotate 52
compress
delaycompress
notifempty
copytruncate
}
অথবা
# Rotate Rails application logs weekly
/path/to/your/rails/applicaton/log/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
copytruncate
}
দয়া করে নোট করুন যে কপিরাইটঙ্কট বর্তমান লগের একটি ব্যাকআপ অনুলিপি তৈরি করে এবং তারপরে অবিরত লেখার জন্য লগ ফাইল সাফ করে। বিকল্পটি হ'ল তৈরি ব্যবহার করুন যা বর্তমান ফাইলটির নাম পরিবর্তন করে এবং তারপরে পুরানো ফাইলের মতো একই নামের সাথে একটি নতুন লগ ফাইল তৈরি করে rot আমি দৃ strongly়ভাবে প্রস্তাব দিচ্ছি যে আপনি কপিরাইটআরঙ্কেট ব্যবহার করবেন যদি না জানেন যে আপনার তৈরির প্রয়োজন। এর কারণটি হ'ল রেলগুলি এখনও পুরানো লগ ফাইলের দিকে ইঙ্গিত রাখতে পারে যদিও এর নাম পরিবর্তন হয়েছে এবং নতুন লগ ফাইলটি সনাক্ত করতে তাদের পুনরায় আরম্ভের প্রয়োজন হতে পারে। অ্যাক্টিভ ফাইলের মতো একই ফাইলটি রেখে কপিরআরঙ্কেট এড়িয়ে চলে।
logrotate --force $CONFIG_FILE
নিজে নিজে চালনার জন্য কনফিগার ফাইলের অবস্থান নির্দিষ্ট করে চালাতে পারেন run
রেল 5 এর জন্য, লগের আকার সীমাবদ্ধ করতে এবং কনসোলটিতে সার্ভার আউটপুট পরিবর্তন না করার জন্য আমাকে এটি করতে হয়েছিল:
ডকুমেন্টেশন অনুসারে , আপনি যদি লগ ফোল্ডারের আকার সীমাবদ্ধ করতে চান তবে এটি আপনার পরিবেশ-ফাইলটিতে রাখুন ('વિકાસ.rb' / 'product.rb')।
config.logger = ActiveSupport::Logger.new(config.paths['log'].first, 1, 50 * 1024 * 1024)
এটির সাহায্যে আপনার লগ ফাইলগুলি 50Mb এর চেয়ে বড় কখনও হবে না। আপনি নিজের পছন্দটিতে আকার পরিবর্তন করতে পারেন। দ্বিতীয় প্যারামিটারে '1' এর অর্থ হল 1 historicতিহাসিক লগ ফাইলটি রাখা হবে, সুতরাং আপনার কাছে 100Mb অবধি লগ থাকবে - বর্তমান লগ এবং 50Mb এর পূর্ববর্তী অংশ unk
config.paths['log'].first
আমি রাখার পরিবর্তেRails.root.join('log', "#{Rails.env}.log")
config.logger = ActiveSupport::Logger.new(config.log_file, 1, 20*1024*1024)
50.megabytes
মতো 50 * 1024 * 1024
তবে এটি বোঝার চেয়েও সহজ। দেখুন ActiveSupport কোর এক্সটেনশন আরো বিস্তারিত জানার জন্য।
Rails.application.config.paths['log'].first
ঠিক এই ফাইলটি ফেরত হিসাবে আবর্তিত করবে
জন্য পাগল 5 , যদি আপনি দৈনন্দিন লগ ঘূর্ণন চান, আপনি শুধুমাত্র এই প্রয়োজন:
config.logger = ActiveSupport::Logger.new(config.paths['log'].first, shift_age = 'daily')
ডকুমেন্টেশন অনুযায়ী , আপনি ব্যবহার করতে পারেন daily
, weekly
বা monthly
।
প্রতিটি লগের জন্য: রেলস লগ, রপুশ লগ, ... আপনি নিজের কনফিগারেশন ফাইলের পরিষেবাতে এটি ব্যবহার করতে পারেন:
config.log_file = 'log/rpush.log'
config.logger = ActiveSupport::Logger.new(config.log_file, 1, 20*1024*1024)
এর অর্থ: বিভক্ত হওয়ার পরে কেবল 1 টি পূর্ববর্তী লগ ফাইল সংরক্ষণ করুন। মূল লগের আকার 20 এমবি এর বেশি কখনও হয় না।
আমার পরিবেশ / product.rb ফাইলে নিম্নলিখিত হিসাবে রেল লগলিয়ারটি ব্যবহার করে লগলিগুলিতে লগগুলি প্রেরণে সক্ষম করুন Enable রেল সংস্করণ 4.1.0
RailsApplication::Application.configure do
require 'logglier'
config.logger = Logglier.new(<https://logs-01.loggly.com/inputs/inputkey>)
log.info("hello from logglier")
end