Saya tidak berpikir itu tergantung pada jenis aplikasi: logging berguna di semua aplikasi (non-sepele). Tentu saja, saya kira, ini bisa lebih berguna di beberapa aplikasi daripada yang lain, tapi saya rasa itu tidak pernah berguna .
Secara khusus, dalam kasus kesalahan, jejak tumpukan akan memberi tahu Anda keadaan program pada titik kegagalan yang tepat , tetapi Anda hanya memiliki sedikit petunjuk tentang keadaan tersebut sebelum kesalahan terjadi. Informasi itu bisa sangat berguna dalam melacak masalah, dan penebangan dapat memberikan wawasan yang bermanfaat tentang hal itu. Saya pikir itu adalah sesuatu yang semua, kecuali yang paling sepele, dari program dapat memperoleh manfaat.
Penggunaan logging lainnya, yang mungkin tidak berguna untuk semua program, adalah dalam analisis statistik. Misalnya, server web Anda biasanya mencatat setiap permintaan yang masuk, dan kemudian ada banyak alat yang dapat menganalisis log tersebut dan menghasilkan grafik dari waktu tersibuk Anda, halaman paling populer dan sebagainya. Anda dapat menggunakan data itu untuk melakukan perencanaan kapasitas ("apakah saya perlu server yang lebih besar?") Dan seterusnya.
Dalam sebagian besar tugas server, pencatatan sangat penting, karena admin biasanya tidak ada ketika ada hal-hal yang terjadi, jadi ia harus memeriksa fakta.
Tapi, seorang pria di Google pernah mengatakan kepada saya bahwa proses server mereka tidak melakukan pendataan; sebaliknya, mereka 'diinstrumentasi'; itu berarti bahwa setiap proses memiliki kait atau port (dia tidak menentukan mekanika) di mana proses lain dapat menempel untuk meminta parameter, dan statistik. Ini adalah proses pemantauan yang menyimpan banyak hal ke log, keuntungannya adalah bahwa informasi yang mereka peroleh bukan "membuka file", "tulis ini", "ambil itu"; mereka mendapatkan hal-hal seperti "45.453 file terbuka", "653 klien layanan X", "rata-rata respons 344 ms untuk kueri Y"
Tentu saja merupakan pendekatan yang berbeda, dan yang cenderung saya ingat ketika saya mengasuh sistem saya, bahkan jika mereka beberapa pesanan yang lebih kecil.
sumber
Saya berasal dari aplikasi N-Tiered winforms yang mencatat semuanya.
Itu tidak terlalu berguna.
Tentu, pengecualian logging sangat bagus; tetapi mengapa memasukkan mereka ke mesin klien ketika Anda bisa mengirim email pengecualian ke tim pengembang?
Informasi pencatatan dengan mudah berubah menjadi kecanduan yang nilainya jarang dibenarkan. Untuk setiap situasi di mana Anda dapat login dengan bebas, lebih baik mengumpulkan informasi yang ditargetkan dan mengirimkannya ke tempat yang Anda perlukan.
sumber
Menangkap informasi pengecualian adalah suatu keharusan karena dapat sangat membantu sampai batas tertentu. Tetapi kadang-kadang informasi pengecualian tidak cukup terutama jika pengguna aplikasi / klien tidak dapat melaporkan kesalahan dengan informasi yang tepat.
Apakah logging terbatas hanya untuk menangkap informasi kesalahan?
Dalam kasus saya (aplikasi web), saya selalu mencatat halaman mana yang dikunjungi, kapan, apa yang mereka klik, di mana ip & browser, dll. Saya bahkan mencatat total waktu muat untuk setiap kunjungan halaman, sehingga saya bisa tahu halaman mana yang lambat dan perlu optimasi. jadi saya bisa mengatakan bahwa saya login sebanyak mungkin.
pada awalnya, saya tidak tahu seberapa penting hal itu. tetapi ternyata ini sangat membantu dalam banyak hal (selain debugging):
Saya pikir, logging bisa menjadi lebih signifikan jika kita suka menggali informasi statistik di dalamnya.
sumber
Saya seorang pengembang di perusahaan yang produknya digunakan di luar negeri. Ketika tim dukungan datang menanyakan tentang definisi masalah, satu-satunya alat saya untuk diagnosis adalah file log saya dan salinan database pelanggan. Menggunakan database dan lingkungan pengembangan saya, saya memiliki kesempatan untuk mereproduksi kasus yang salah, karena saya mencatat data yang masuk ke modul saya dan tindakan terkait. Jika saya bisa mereproduksi kesalahan dengan bantuan data yang saya kumpulkan, maka saya bisa memperbaikinya dengan debugging. Jika saya tidak memiliki file log, maka saya harus bergantung pada deskripsi pelanggan atau tim pendukung tentang apa yang terjadi dalam kasus apa (yang memiliki peluang besar untuk menyesatkan).
Kedua, logging memberi saya kesempatan untuk mendeteksi kemacetan modul saya di situs yang dikerahkan, karena saya mencatat tanggal & waktu tindakan tertentu dan kemudian saya bisa melihat di mana tindakan menghabiskan banyak waktu.
Selain itu, anggaplah solusi kami terdiri dari 6 modul dan saya melihat log kesalahan dalam file log saya tentang batas waktu basis data. Jika kesalahan ini masuk 5 modul lain juga, maka kemungkinan ini adalah masalah terkait SQL server menjadi lebih besar. Jika ini hanya dicatat dalam modul saya, maka probabilitas bahwa pertanyaan saya bermasalah semakin besar. Saya pikir hal-hal semacam ini adalah indikator yang berguna.
Tentang jenis data apa yang saya lihat di file log saya tergantung pada konfigurasi level log. Jika ini adalah produk baru, kami mengatur level log ke "Semua" untuk mengumpulkan data sebanyak mungkin. Tetapi ketika kami meningkatkan produk, kami mungkin lebih suka menjaga level log pada "Kesalahan" hanya mencatat kesalahan, tetapi tidak pada tingkat informasi log, dll ...
sumber
Pencatatan berguna untuk informasi yang tidak dapat Anda peroleh dengan program lain:
Catatan: Anda ingin setidaknya dua file log.
INFO selalu aktif. DEBUG aktif saat dibutuhkan.
Tulis kode logging untuk mengantisipasi bahwa suatu hari nanti Anda harus men-debug situasi di mana SEMUA yang Anda miliki adalah file log, dan melakukannya dengan benar mungkin merupakan perbedaan antara dipecat dan dipromosikan.
Untuk tambahan, minta semua panggilan fungsi menambahkan parameter mereka ke jejak stack, di Java dengan
Pendekatan ini pada dasarnya meningkatkan tumpukan panggilan Anda dengan nilai parameter, dan dapat memungkinkan Anda untuk menganalisis situasi hanya dengan jejak tumpukan dan tidak harus melihat file log.
sumber
Saya juga merekomendasikan bahwa semua aplikasi non-sepele menggunakan multi-level logging.
Karena alasan yang dinyatakan orang lain, ini adalah alat yang sangat berharga untuk menyelesaikan masalah dengan aplikasi.
Dalam beberapa kasus, pencatatan sangat penting, misalnya dalam aplikasi keuangan dan domain lain yang memerlukan log aktivitas, untuk keamanan, metrik penggunaan, dan audit.
sumber
Itu pasti tergantung pada jenis sistem yang Anda bangun.
Jika Anda menulis aplikasi desktop yang berdiri sendiri, seperti pengolah kata, maka Anda mungkin tidak perlu login.
Jika Anda menulis sistem tertanam, maka Anda tidak dapat hidup tanpa login. Jika tidak, ketika perangkat tertanam Anda membeku, Anda tidak tahu mengapa. Anda juga perlu masuk setiap kali sistem Anda melibatkan banyak proses atau beberapa mesin fisik yang saling berkomunikasi. Sekali lagi, ketika sistem hang, Anda perlu tahu bagian mana yang mati kapan dan mengapa. Anda harus dapat membandingkan log untuk menentukan apakah data membuatnya melintasi dari satu proses ke proses lainnya. Dengan cara yang sama, Anda perlu mencatat kapan pun sistem Anda dimaksudkan untuk berjalan untuk waktu yang lama tanpa banyak interaksi pengguna langsung.
sumber
Pencatatan selalu bermanfaat. Tetapi ketika implementasi menyadari itu tidak harus Anda, siapa yang akan membaca log. Mungkin itu semacam admin, pengguna akhir, pelanggan, tim pendukung, ...
Jadi jangan hanya mencatat stacktraces, tetapi juga beberapa informasi tambahan yang dapat diartikan oleh non-pengembang. Ketika aplikasi Anda dikelola oleh beberapa kelompok lain, juga bermanfaat untuk menulis beberapa kode kesalahan unik ke log Anda. Ini dapat memudahkan dukungan, otomatisasi, ...
Poin lain dari perspektif admin: Pikirkan tentang rotasi log.
sumber