Dalam tugas menyapu jika saya menggunakan perintah put maka saya melihat output di konsol. Namun saya tidak akan melihat pesan itu di file log saat aplikasi diterapkan pada produksi.
Namun jika saya mengatakan Rails.logger.info maka dalam mode pengembangan saya tidak melihat apa pun di konsol. Saya harus pergi ke file log dan mengekor itu.
Idealnya saya ingin menggunakan Rails.logger.info dan dalam mode pengembangan di dalam tugas rake, output dari logger juga harus dikirim ke konsol.
Apakah ada cara untuk mencapai itu?
sumber
Rails.logger = Logger.new(STDOUT)
development.rb?config.logger = Logger.new(STDOUT)
Anda dapat membuat tugas penggaruk baru agar ini berfungsi.
Dengan cara ini ketika Anda menjalankan tugas rake Anda, Anda dapat menambahkan to_stdout terlebih dahulu untuk mendapatkan pesan log stdout atau tidak menyertakannya agar pesan dikirim ke file log default
sumber
Tugas rake dijalankan oleh pengguna, pada baris perintah. Apa pun yang perlu mereka ketahui segera ("diproses 5 baris") harus dikeluarkan di terminal
puts
.Apa pun yang perlu disimpan untuk anak cucu ("kirim email peringatan ke [email protected]") harus dikirim ke
Rails.logger
.sumber
Saya akan mengatakan bahwa menggunakan
Rails.logger.info
adalah cara untuk pergi.Anda tidak akan dapat melihatnya di konsol server karena tidak akan berjalan melalui server. Buka saja konsol baru dan
tail -f
file log, itu akan melakukan trik.( melalui )
sumber
tailf
"Ini mirip dengan tail -f tetapi tidak mengakses file ketika tidak berkembang" (dari halaman manual). Ini juga lebih pendekKode
Untuk Rails 4 dan yang lebih baru, Anda dapat menggunakan siaran Logger .
Jika Anda ingin mendapatkan STDOUT dan pencatatan file untuk tugas rake dalam mode pengembangan, Anda dapat menambahkan kode ini ke
config/environments/development.rb
:Uji
Berikut tugas Rake kecil untuk menguji kode di atas:
Menjalankan
rake stdout_and_log:test
keluaransementara
telah ditambahkan ke
log/development.log
.Menjalankan
rake stdout_and_log:test RAILS_ENV=production
keluaransementara
telah ditambahkan ke
log/production.log
.sumber
basename($0) == 'rake'
trik tidak lagi berfungsi, karenarails
perintah itu sendiri berjalanrake
. Saya ingin menemukan pengganti yang baik untuk itu tergantung pada tugas yang mengaturbroadcast
. (Bagian itu, setidaknya, masih berfungsi dengan baik.)Rakefile
akar proyek AndaBagaimana dengan membuat aplikasi pembantu yang mendeteksi lingkungan mana yang sedang berjalan dan melakukan hal yang benar?
Kemudian panggil output_debug alih-alih put atau logger.info
sumber
Di Rails 2.X untuk mengarahkan logger ke STDOUT dalam model:
Untuk mengarahkan logger di pengontrol:
sumber
Jalankan pekerjaan latar belakang dengan '&' dan buka skrip / konsol atau apa pun .. Dengan begitu Anda dapat menjalankan beberapa perintah di jendela yang sama.
catatan Bisa menjadi ceroboh dengan cepat ketika ada banyak keluaran logging.
sumber