GNU/Linux >> Belajar Linux >  >> Linux

membuat file log

Cara standar untuk masuk dari program C adalah syslog .

Mulailah dengan menyertakan file header:

#include <syslog.h>

Kemudian di awal program Anda, Anda harus mengonfigurasi syslog dengan memanggil openlog :

openlog("programname", 0, LOG_USER);

Argumen pertama adalah identifikasi atau tag, yang ditambahkan secara otomatis di awal setiap pesan. Cantumkan nama program Anda di sini.

Argumen kedua adalah opsi yang ingin Anda gunakan, atau 0 untuk perilaku normal. Daftar lengkap opsi ada di man 3 syslog . Yang mungkin berguna bagi Anda adalah LOG_PID , yang membuat syslog juga merekam id proses dalam pesan log.

Kemudian, setiap kali Anda ingin menulis pesan log, panggil syslog :

syslog(LOG_INFO, "%s", "Message");

Argumen pertama adalah prioritas. Rentang prioritas dari DEBUG (paling tidak penting) ke EMERG (hanya untuk keadaan darurat) dengan DEBUG , INFO , dan ERR menjadi yang paling umum digunakan. Lihat man 3 syslog untuk opsi Anda.

Argumen kedua dan ketiga adalah format dan pesan, seperti printf.

Di file log mana ini muncul tergantung pada pengaturan syslog Anda.

Dengan pengaturan default, mungkin masuk ke /var/log/messages .

Anda dapat mengatur file log kustom dengan menggunakan salah satu fasilitas dalam rentang LOG_LOCAL0 ke LOG_LOCAL7 .

Anda menggunakannya dengan mengubah:

openlog("programname", 0, LOG_USER);

untuk

openlog("programname", 0, LOG_LOCAL0);

atau

openlog("programname", 0, LOG_LOCAL1);

dll.

dan menambahkan entri yang sesuai ke /etc/syslog.conf , mis.

local1.info /var/log/programname.log

dan memulai ulang server syslog, mis.

pkill -HUP syslogd

.info bagian dari local1.info di atas berarti semua pesan yang INFO atau lebih penting akan dicatat, termasuk INFO , NOTICE , ERR (kesalahan), CRIT (kritis), dll., tetapi bukan DEBUG .

Atau, jika Anda memiliki rsyslog , Anda dapat mencoba filter berbasis properti, mis.

:syslogtag, isequal, "programname:"    /var/log/programname.log

Tag syslog harus berisi ":".

Atau, jika Anda berencana untuk mendistribusikan perangkat lunak Anda ke orang lain, sebaiknya jangan mengandalkan penggunaan LOG_LOCAL atau rsyslog menyaring.

Dalam hal ini, Anda harus menggunakan LOG_USER (jika itu adalah program normal) atau LOG_DAEMON (jika server), tulis pesan startup dan pesan kesalahan Anda menggunakan syslog , tetapi tulis semua pesan log Anda ke file di luar syslog . Misalnya, Apache HTTPd mencatat ke /var/log/apache2/* atau /var/log/httpd/* , saya berasumsi menggunakan open biasa /fopen dan write /printf panggilan.


Anda ingin #include <syslog.h> , lalu gunakan syslog() berfungsi untuk mengirim data ke program logging sistem apa pun yang aktif.

Lihat halaman manualnya di sini.


Linux
  1. Apa Cara Nyaman Memeriksa Apa yang Ditambahkan Ke File Log Secara Realtime?

  2. Cara Mengosongkan File Log di Linux

  3. Bagaimana cara membuat ssh masuk sebagai pengguna yang tepat?

  1. Buat `cut` Ubah File Di Tempat?

  2. Bagaimana cara membuat file TIDAK dapat dimodifikasi?

  3. Temukan proses mana yang memodifikasi file

  1. Linux – Bagaimana Mengkonfigurasi File Syslog.conf, Mencatat Pesan Iptables Dalam File Terpisah?

  2. Temukan File Log Firefox?

  3. Layanan OS Linux 'syslog'