PowerPoint 2010: Memformat GambarBiasanya mesej log ditulis ke stderr. Saya tertanya-tanya adakah idea / amalan yang baik untuk memisahkan mesej log sehingga kesilapan dan amaran pergi ke stderr sementara mesej debug / maklumat / notis pergi ke stdout? Atau ini tidak relevan memandangkan banyak proses pembalakan khusus hanya dibaca dari stdin, yang memerlukan mesej log sumber dalam stderr dan stdout digabungkan dan dialihkan ke stdin logger. [Kemas kini] Dua jawapan di bawah kedua-duanya disebut syslog, saya rasa saya perlu menjelaskan penyediaannya secara terperinci. Proses daemon yang saya tanyakan berjalan di latar depan sendiri. Daemonization dikendalikan dengan mengawasi proses seperti Dalam kes Oleh itu, dalam tetapan khusus ini, adakah amalan yang baik untuk memisahkan log antara stderr dan stdout, atau hanya menulis kepada salah satu daripadanya? 4
Saya tidak akan mencadangkan penggabungan stdout dan stderr dalam program anda, tetapi bagaimana
anda mengatasinya di luar ia terpulang pada awak. Kerana
untuk menggabungkan kedua aliran bersama, kerana kebanyakan perkhidmatan tidak menyebarkan data melalui stdout. Sekiranya anda mahu menggunakan
di mana Pertama, sesuatu yang penting untuk diperjelaskan: Inti daemon adalah bahawa ia perlu melepaskan diri dari mempunyai terminal kawalan, sehingga dapat bertahan setelah logout. Setelah tidak ada terminal, semua mesej perlu dihantar ke daemon syslog atau fail log yang diuruskan secara langsung oleh proses. Sekiranya anda sebenarnya tidak merujuk kepada daemon, dan sebenarnya bermaksud skrip shell atau yang serupa yang anda tulis sendiri, maka logiknya biasanya seperti ini:
2
Saya tidak fikir anda harus menggunakan stdout dan stderr untuk pembalakan. Sekiranya anda mempunyai mesej log dengan keparahan yang berbeza,
mereka harus ditandai dengan awalan untuk memudahkan menyaring / menyusunnya menggunakan Saya katakan menggunakan stdout dan stderr untuk pembalakan akan melanggar prinsip paling tidak mengejutkan. Sekiranya ia adalah daemon, saya cadangkan menggunakan antara muka syslog untuk memasukkan mesej anda terus ke log.Jalankan "man 3 syslog" untuk maklumat. Sekiranya perlu, program anda juga dapat memiliki opsi debug (dengan parameter yang menentukan keutamaan) yang memberitahu program daemon untuk tidak berjalan di latar belakang, dan juga masuk ke stderr. Saya akan menulis fungsi pembalakan yang mengambil keutamaan dan rentetan sebagai argumen. Ia harus memanggil syslog () untuk mencatat mesej dengan betul, dan jika keutamaannya lebih besar dari atau sama dengan nilai keutamaan debug global, keluarkan pesan ke stderr dan juga syslog (). Panggil Pastikan anda menelefon Anda mungkin (jika menggunakan Ubuntu) perlu mengkonfigurasi PS - Gunakan perintah logger jika daemon anda adalah skrip shell 1
Tweet Share Link Plus Send Send Pin |