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 0normal davranış için olan seçeneklerdir . Seçeneklerin tam listesi içinde man 3 syslog. Yararlı bulabileceğiniz bir tanesi LOG_PIDde, 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, INFOve ERRen olağan olarak kullanılanlardır. man 3 syslogSeç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_LOCAL0oluş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 .infokısmı , (hata), (kritik), vb. Dahil olmak üzere , ancak önemli olmayan local1.infotüm iletilerin kaydedileceği anlamına gelir .INFOINFONOTICEERRCRITDEBUG
Veya, varsa , örneğin rsyslogbir ö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_LOCALveya bir rsyslogfiltreye 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/ fopenve write/ printfcalls kullanarak varsayırım .