Masuk ke file teks atau database?

25

Kapan saya harus menggunakan database untuk login dan kapan file teks?
Saya melihat bahwa server web dan kerangka kerja web (yang digunakan aplikasi Anda secara internal) biasanya (selalu?) Mencatat permintaan dan kesalahan ke dalam file teks secara default. Tetapi saya melihat bahwa orang-orang yang mengembangkan aplikasi mereka di sekitar server dan kerangka kerja itu kadang-kadang masuk ke dalam basis data (bahkan DB utama aplikasi, bukan yang eksternal).
Mungkin juga ada perbedaan antara log debug dan log audit - Saya telah membaca klasifikasi ini di suatu tempat di situs ini.

Nakilon
sumber
Ini dapat membantu juga stackoverflow.com/questions/3458813/…
Muhammad Raja
2
Kemungkinan duplikat dari Log ke file atau ke tabel database?
nyamuk
Meskipun Anda tidak boleh mencatat informasi sensitif, beberapa sistem mungkin memerlukannya, dan ini merupakan kasus yang bagus untuk masuk ke basis data. Terkadang pengembang secara tidak sengaja mencatat informasi sensitif. Untuk menjaga dari kecelakaan ini banyak pengembang aplikasi hanya akan masuk ke database sehingga hal-hal seperti nomor jaminan sosial dalam pesan log tidak duduk di file teks dalam teks biasa di 13 server yang berbeda.
Greg Burghardt

Jawaban:

16

Dalam istilah yang sangat umum, masuk ke file teks jauh lebih cepat daripada masuk ke database. Itulah aspek utama pencatatan yang perlu Anda pertimbangkan.

Alasan Anda masuk ke DB lebih mungkin karena Anda ingin menanyakan hasil - mencari info log tertentu lebih mudah dalam DB, terutama jika Anda mencatat informasi kontekstual yang dapat digunakan untuk mengelompokkan entri log bersama. Biasanya juga lebih mudah untuk mengakses pusat DB daripada file log pada server yang mungkin diamankan dan tidak dapat diakses.

Yang ideal adalah untuk login secara lokal ke file, dan kemudian memigrasikan data ini ke DB untuk diperiksa jika diperlukan sesudahnya.

Sekarang audit adalah binatang yang sama sekali berbeda. Walaupun mirip dalam konsep logging, audit biasanya perlu disimpan untuk waktu yang lama (tidak seperti file log yang digunakan untuk debugging atau pelacakan yang dapat dihapus dengan segera). Audit ada untuk menunjukkan informasi penting. Anda mencatat jauh lebih sedikit informasi audit dan lebih jarang daripada pencatatan normal sehingga kinerja tidak menjadi masalah. Karena alasan inilah keuntungan penulisan info audit ini ke DB pusat terlihat.

gbjbaanb
sumber
1
Pengaturan lain yang saya lihat adalah untuk log yang ditulis secara lokal pada awalnya dan kemudian didorong ke DB oleh semacam pekerjaan latar belakang.
Robbie Dee
@RobbieDee Saya suka ide ini. Saya memiliki semacam pertanyaan duplikat: apakah umum memiliki file log durasi terbatas (misalnya hanya 30 hari terakhir) tetapi karena log dimasukkan ke dalam basis data (mis. Mingguan), maka semua log disimpan dalam database => file log bertindak seperti buffer saja dan semua operasi baca dilakukan pada database? Karena penulisan dalam DB tertunda, tidak ada kekhawatiran tentang kinerja, bukan.
Al-un
9

Tidak ada satu ukuran yang cocok untuk semua pendekatan dan untuk ketahanan, Anda terkadang ingin menggunakan beberapa pendekatan. Mengambil contoh Anda, Anda mungkin ingin menyimpan log debug dalam file dan menyimpan log audit dalam DB.

Remah roti aplikasi

Pro: Mudah diimplementasikan dan langsung terlihat oleh pengguna

Cons: Informasi hanya berlanjut saat aplikasi menyala

File teks

Pro: Mudah diimplementasikan

Cons: Perlu memastikan penguncian file tidak terjadi. Apa yang harus dilakukan ketika ruang disk habis pada drive log?

Log acara

Pro: Mudah diimplementasikan

Cons: Log peristiwa mungkin menjadi penuh jika tidak disiapkan dengan benar atau log lama bisa hilang karena kebijakan retensi / cleardown.

Basis data

Pro: Mudah diimplementasikan

Cons: Lebih banyak lalu lintas DB. Bagaimana cara mencatat kehilangan DB atau masalah DB lainnya?

Pesan (MQ)

Pro: Api dan lupakan

Cons: Lapisan lain salah. Membutuhkan pengaturan

Robbie Dee
sumber
Anda mungkin juga ingin memasukkan daemon syslog dan tujuan log SNMP.
gbjbaanb
@ gbjbaanb Yah memang - beberapa OS memiliki fungsi seperti built-in - ini tentu bukan daftar lengkap. Sistem ketersediaan tinggi mungkin juga mengirim SMS ketika mereka turun.
Robbie Dee
2

Log audit harus memastikan keterlacakan penuh operasi dalam waktu yang lebih lama untuk keperluan audit, dengan tujuan untuk sepenuhnya membenarkan konten database Anda.

Dalam beberapa kasus (misalnya aplikasi keuangan) log ini mungkin harus memastikan kepatuhan dengan persyaratan hukum seperti retensi (di beberapa negara selama 10 tahun) atau tidak dapat diubah. Karena log-log ini harus menjustifikasi konten db pada tingkat aplikasi, adalah praktik umum untuk menyimpannya di db, di mana akses dapat dikontrol untuk menghindari perubahan yang tidak sah.

Log lain , seperti log pemantauan atau log keamanan sering harus mengatasi kendala kinerja dan volume. Ini umumnya ditulis ke file karena lebih cepat untuk menulis (tanpa overhead manajemen transaksi) lebih mudah untuk diarsipkan secara offline, dan lebih mudah untuk diintegrasikan dengan alat pemantauan SIEM eksternal .

Perlu dicatat bahwa, meskipun jenis log ini dapat digunakan untuk menunjukkan keandalan log audit (misalnya tidak ada akses tidak sah), mereka umumnya memiliki kendala retensi yang lebih pendek (misalnya antara 6 bulan dan 2 tahun untuk keperluan penegakan hukum dari log telekomunikasi) jika ada kendala sama sekali.

Christophe
sumber
1

Salah satu dari banyak alasan untuk menggunakan db untuk debug logging adalah Ketika Anda tidak memiliki akses ke aplikasi atau server web untuk melihat penampil acara atau file teks

Log audit berbeda dari log debug dalam konteks aplikasi web, seperti dalam beberapa aplikasi Anda mungkin perlu menunjukkannya kepada pengguna akhir sehingga mereka harus masuk ke database untuk pengambilan mudah.

Anda dapat menggunakan DB Tools untuk memfilter dan juga mudah dilihat.

Muhammad Raja
sumber
Menulis ke file log server bukan satu-satunya pilihan untuk sistem konkurensi tinggi. Log ini sering ditulis ke perangkat klien dan kemudian didorong melalui untuk mendukung jika terjadi masalah. Konkurensi tinggi juga membuat ini tidak cocok untuk menulis ke satu basis data.
Robbie Dee
@RobbieDee Apakah itu kasus untuk server web dan aplikasi web juga? karena itulah yang diminta OP saya percaya
Muhammad Raja