Saya tahu banyak tentang penebangan perpustakaan tetapi tidak menguji banyak dari mereka. (GoogleLog, Pantheios, dorongan tambahan :: pustaka log ...)
Dalam gim, terutama di gim multipemain dan multithreaded jarak jauh, pencatatan sangat penting untuk debugging, bahkan jika Anda menghapus semua log pada akhirnya.
Katakanlah saya membuat game PC (bukan konsol) yang membutuhkan log (multipemain dan multithreaded dan / atau multiproses) dan saya punya alasan yang bagus untuk mencari perpustakaan untuk logging (seperti, saya tidak punya waktu atau saya tidak percaya pada kemampuan saya untuk menulis satu dengan benar untuk kasus saya).
Dengan asumsi bahwa saya perlu:
- kinerja
- kemudahan penggunaan (memungkinkan streaming atau memformat atau sesuatu seperti itu)
- andal (jangan bocor atau mogok!)
- lintas-platform (setidaknya Windows, MacOSX, Linux / Ubuntu)
Apakah logging logging akan Anda rekomendasikan?
Saat ini, saya pikir itu meningkatkan :: log adalah yang paling fleksibel (Anda bahkan dapat login ke jarak jauh!), Tetapi tidak memiliki pembaruan kinerja yang baik : adalah untuk kinerja tinggi, tetapi belum dirilis. Pantheios sering dikutip tetapi saya tidak memiliki poin perbandingan pada kinerja dan penggunaan. Saya telah menggunakan lib saya sendiri untuk waktu yang lama, tetapi saya tahu itu tidak mengelola multithreading sehingga merupakan masalah besar, bahkan jika itu cukup cepat. Google Log sepertinya menarik, saya hanya perlu mengujinya tetapi jika Anda sudah membandingkan lib-lib itu dan yang lainnya, saran Anda mungkin bermanfaat.
Gim seringkali membutuhkan kinerja yang rumit dan sulit untuk di-debug sehingga akan lebih baik untuk mengetahui pencatatan pustaka yang, dalam kasus khusus kami, memiliki keuntungan yang jelas.
Jawaban:
catat dengan menggunakan soket (pembungkus soket apa pun bisa mencukupi) + browser web websocket => alat logging yang paling fleksibel dan tidak mencolok mungkin, akan mendapatkan waktu berjam-jam untuk debugging dan menghindari sakit mata.
Sekarang, bonusnya:
dan banyak lagi tugas di luar pencatatan:
(hampir semua hal di atas dapat dilakukan menggunakan soket flash, simpan kemampuan basis data)
Sekarang saya tahu agak lama untuk mengatur hal itu. Tapi itu benar-benar merupakan keuntungan waktu pada proyek yang panjang, dengan situasi debugging yang sulit (seperti dalam game.) Ini adalah hal paling kuat yang saya gunakan sejak para debugger ...
Catatan 1: satu-satunya downside => periksa efek samping ketika men-debug kode jaringan game (berdampak pada ukuran buffer socket, latency, bandwidth, dll ...)
Catatan 2: beberapa broswer dinonaktifkan oleh websocket default karena alasan keamanan, periksa tentang: konfigurasi hal-hal untuk memastikan itu diaktifkan.
sumber
Ketika datang ke kinerja, saya telah menemukan templog cukup banyak tidak terkalahkan. Itu menggunakan templat ekspresi untuk menunda evaluasi pernyataan logging sampai itu ditetapkan bahwa informasi akan dicatat. Karena Anda juga dapat mematikan sebagian pencatatan (tergantung pada tingkat keparahan, asal, dan audiens yang ditargetkan dari pesan log), beberapa pernyataan pencatatan ini dapat dihilangkan menjadi nol kode oleh kompiler untuk rilis build. (Saya benar-benar melihat ini terjadi dengan VC.)
Tidak banyak yang dilakukan ke perpustakaan baru-baru ini, dan yang lain di SO telah menemukan bagasi kurang dalam beberapa hal, tetapi di sebuah perusahaan saya dulu bekerja untuk kami telah menemukan orang itu cukup responsif, dan salah satu pekerja saya saat itu bahkan sapi mendapat akses komit dan menambahkan beberapa kode ke dalamnya, sehingga Anda mungkin merasa layak mencobanya.
Untuk menghitung kebutuhan Anda:
Terbaik yang saya temukan. Terutama kemampuannya untuk mengecualikan pesan log pada waktu kompilasi dan membuat kompiler sepenuhnya menghilangkannya sangat menarik.
Ada pesan kesalahan kompiler mengerikan klasik dari templat-meta hal ketika Anda melakukan sesuatu yang salah, tetapi ketika datang untuk kemudahan penggunaan, ini
sulit dikalahkan.
Namun, Anda mungkin harus membuat log sink Anda sendiri (di situlah pesan log pergi), karena beberapa yang pra-paket (stderr, file, Windows logging, dll.) Tidak begitu canggih. Karena kinerja menjadi tujuan utama, intrinsik dari semuanya agak rumit (seperti formatters pesan log yang cukup kusut dengan log sink), tapi kami menguasainya (saya ingat melangkah melalui itu dalam debugger membantu dengan itu) dan sekali Memahami itu tidak terlalu sulit untuk menulis format pesan Anda sendiri atau log sink.
Kami telah menggunakannya tanpa menemukan masalah parah seperti itu. Hampir tidak ada alokasi memori dinamis di sana, jadi sulit untuk membayangkan itu melakukan sesuatu yang salah. Tentu saja, kami hanya pernah mengujinya di dunia nyata dalam satu produk.
Ketika kami menggunakannya, kami menggunakannya di Win32, OSX, dan beberapa distribusi Linux yang berbeda, di antaranya Ubuntu.
Adapun multi-threading: Kami belum pernah menggunakan ini, tetapi dari apa yang saya ingat tentang arsitektur lib tampaknya Anda hanya perlu menangani ini di log sink. ICBWT.
sumber
Anda mungkin ingin mempertimbangkan perpustakaan logog, di http://www.logog.org , yang saya pikir dapat memenuhi kebutuhan Anda. Peringatan: Saya menulisnya.
Lihat juga jawaban orang lain di /programming/696321/best-logging-framework-for-native-c .
sumber
Anda mungkin tertarik dengan set alat Baical :
sumber