Bir C programından giriş yapmanın standart yolu syslog
.
Başlık dosyasını ekleyerek başlayın:
#include <syslog.h>
Daha sonra programınızın başında, syslog’u aşağıdakileri arayarak yapılandırmanız gerekir openlog
:
openlog("programname", 0, LOG_USER);
İlk argüman, her mesajın başında otomatik olarak eklenen tanımlama veya etikettir. Programınızın adını buraya yazın.
İkinci argüman, kullanmak istediğiniz veya 0
normal davranış için olan seçeneklerdir . Seçeneklerin tam listesi içinde man 3 syslog
. Yararlı bulabileceğiniz bir tanesi LOG_PID
de, syslog'un işlem kimliğini günlük mesajına kaydetmesini sağlayan şeydir.
Ardından, bir günlük mesajı yazmak istediğinizde, aşağıdakileri ararsınız syslog
:
syslog(LOG_INFO, "%s", "Message");
İlk argüman önceliktir. Gelen öncelik aralıkları DEBUG
(en önemli) için EMERG
(yalnızca acil durumlar için) DEBUG
, INFO
ve ERR
en olağan olarak kullanılanlardır. man 3 syslog
Seçenekleriniz için bakınız .
İkinci ve üçüncü argümanlar tıpkı printf gibi bir biçim ve bir mesajdır.
Bunun göründüğü günlük dosyası, sistem günlüğü ayarlarınıza bağlıdır.
Varsayılan bir kurulumla muhtemelen gider /var/log/messages
.
Aralığındaki olanaklardan birini kullanarak özel bir günlük dosyası LOG_LOCAL0
oluşturabilirsiniz LOG_LOCAL7
.
Bunları değiştirerek kullanıyorsunuz:
openlog("programname", 0, LOG_USER);
için
openlog("programname", 0, LOG_LOCAL0);
veya
openlog("programname", 0, LOG_LOCAL1);
vb.
ve buna karşılık gelen bir girdi eklemek /etc/syslog.conf
, örneğin
local1.info /var/log/programname.log
ve syslog sunucusunun yeniden başlatılması, örneğin
pkill -HUP syslogd
Yukarıdakilerin bir .info
kısmı , (hata), (kritik), vb. Dahil olmak üzere , ancak önemli olmayan local1.info
tüm iletilerin kaydedileceği anlamına gelir .INFO
INFO
NOTICE
ERR
CRIT
DEBUG
Veya, varsa , örneğin rsyslog
bir özellik tabanlı filtre deneyebilirsiniz
:syslogtag, isequal, "programname:" /var/log/programname.log
Sislog etiketi bir ":" içermelidir.
Veya, yazılımınızı başkalarına dağıtmayı planlıyorsanız, kullanmaya LOG_LOCAL
veya bir rsyslog
filtreye güvenmek iyi bir fikir olmayabilir .
Bu durumda kullanmanız LOG_USER
(normal bir programsa) veya LOG_DAEMON
(bir sunucuysa), başlangıç iletilerinizi ve hata iletilerinizi kullanarak yazmanız gerekir syslog
, ancak tüm günlük iletilerinizi dışında bir dosyaya yazın syslog
. Örneğin, Apache HTTPd oturum açar /var/log/apache2/*
ya da /var/log/httpd/*
, normal open
/ fopen
ve write
/ printf
calls kullanarak varsayırım .