c logger, C dili için basit ve etkili bir günlük kaydı kütüphanesidir . Farklı ayrıntı ve kontrol düzeyleriyle günlük mesajlarını bir dosyaya veya konsola yazmanıza olanak tanır. Bu yazımızda C logger’ın hangi özellikleri sunduğunu, nasıl kurulacağını ve C projelerinizde nasıl kullanılacağını göreceğiz.
C logger özellikleri
c logger, yalnızca 500 satırlık kaynak kodundan oluşan hafif bir kitaplıktır. C89 standardıyla uyumludur ve iş parçacığı açısından güvenlidir. İki tür günlük kaydı sunar:
- Günlük mesajlarını standart veya hata çıktısında görüntüleyen konsol günlüğü.
- Dosya boyutuna göre otomatik döndürmeyle günlük mesajlarını bir metin dosyasına yazan dosyaya kaydetme.
c logger ayrıca mesaj formatını, ayrıntı düzeyini, günlük dosyasının adını, maksimum dosya boyutunu vb. tanımlayabileceğiniz bir yapılandırma dosyasıyla günlüğe kaydetmeyi özelleştirmenize de olanak tanır.
C logger nasıl kurulur?
C logger'ı kurmak için GitHub deposundan kaynak kodunu indirmeniz ve favori C derleyicinizle derlemeniz yeterlidir. Örneğin, gcc ile:
$ git clone https://github.com/yksz/c-logger.git $ cd c-logger $ gcc -c -o logger.o logger.c $ ar rcs libclogger.a logger.o
Bu, C programınıza bağlayabileceğiniz statik bir libclogger.a arşivi oluşturacaktır. Ayrıca logger.h başlık dosyasını kaynak dosyalarınıza eklemeniz gerekecektir.
Clogger nasıl kullanılır?
C logger'ı kullanmak için, önce kütüphaneyi logger_init
, buna yapılandırma dosyasının adını veya varsayılan parametreleri kullanmak istiyorsanız NULL'u iletmeniz gerekir. günlük mesajları yazmak, ona bir etiket, bir seviye ve bir mesaj iletmek için logger
kullanabiliriz Örneğin :
#include "logger.h" int main(void) { /* Kütüphaneyi config.ini dosyasıyla başlatın */ if (logger_init("config.ini") != 0) { fprintf(stderr, "C'nin başlatma hatası günlükçü\n"); 1'i döndür; } /* "main" etiketiyle INFO düzeyinde bir mesaj yazın */ logger("main", LOG_INFO, "Programın başlangıcı"); /* "main" etiketiyle HATA düzeyinde bir mesaj yazın */ logger("main", LOG_ERROR, "Ölümcül hata"); /* Kitaplığı sonlandır */ logger_end(); 0 değerini döndür; }
Günlük mesajlarının biçimi, kullanılan yapılandırma dosyasına bağlıdır. Varsayılan olarak şu biçimdedir:
tarih-saat etiketi mesaj düzeyi
Örneğin :
2023-06-13 02:37:16 ana BİLGİ Programın başlangıcı 2023-06-13 02:37:16 ana HATA Önemli hata
Biçim, yapılandırma dosyasındaki aşağıdaki değişkenler kullanılarak değiştirilebilir:
- %d: YYYY-AA-GG biçimindeki tarih
- %t: SS:DD:SS formatında saat
- %c: mesaj etiketi
- %l: mesaj düzeyi
- %m: mesaj
- %n: satır sonu
Örneğin, daha kısa bir formata sahip olmak istiyorsak şunu kullanabiliriz:
[formatlar] basit = "%t %c %l %m%n"
Hangi düzeyde ayrıntı mevcut?
c logger, günlük mesajları için beş düzeyde ayrıntı sunar:
- LOG_DEBUG: hata ayıklama mesajları için, geliştiriciler için kullanışlıdır.
- LOG_INFO: bilgilendirici mesajlar için, kullanıcılar için faydalıdır.
- LOG_WARN: uyarı mesajları için, anormal ancak kritik olmayan durumların raporlanması için kullanışlıdır.
- LOG_ERROR: hata mesajları için, programın düzgün çalışmasını engelleyen kritik durumları raporlamak için kullanışlıdır.
- LOG_FATAL: ölümcül mesajlar için, programın durdurulmasını gerektiren kurtarılamaz durumların raporlanması için kullanışlıdır.
Yapılandırma dosyasındaki log_level
kullanarak günlük mesajlarının ayrıntı düzeyini kontrol edebilirsiniz Örneğin, yalnızca HATA ve FATAL düzeyindeki mesajları görüntülemek istiyorsak şunu kullanabiliriz:
[genel] log_level = 3
Düzeyler en ayrıntılıdan en az ayrıntılıya doğru 0'dan 4'e kadar numaralandırılır. Varsayılan olarak düzey, tüm mesajları görüntüleyen 0'dır.
Günlük dosyasının boyutu nasıl kontrol edilir?
yapılandırma dosyasındaki max_file_size
kullanarak günlük dosyasının boyutunu sınırlamanıza olanak tanır Örneğin günlük dosyasının 1 MB'ı aşmamasını istiyorsak şunu kullanabiliriz:
[genel] max_file_size = 1048576
Boyut bayt cinsinden ifade edilir. Varsayılan olarak boyut sınırı yoktur.
Günlük dosyası maksimum boyuta ulaştığında c logger sayısal sonek içeren yeni bir dosya oluşturur. Örneğin, günlük dosyasının adı log.txt
log.txt.1
, ardından log.txt.2
vb. olacaktır. Oluşturulan maksimum dosya sayısı, yapılandırma dosyasındaki max_file_count
Örneğin en fazla 10 günlük dosyası tutmak istiyorsak şunu kullanabiliriz:
[genel] max_file_count = 10
Varsayılan olarak dosya sayısında herhangi bir sınırlama yoktur.
SSS
C logger ile log4c veya nglogc gibi diğer günlük kitaplıkları arasındaki fark nedir?
c logger sadeliği ve hafifliğiyle öne çıkıyor. Diğer, daha kapsamlı kütüphaneler kadar çok özelliğe sahip değildir ancak temel günlük kaydı ihtiyaçlarını karşılar. Ayrıca C89 ve iş parçacığı güvenliği standardı ile de uyumludur.
Günlük mesajlarını metin dışında bir biçimde nasıl görüntülerim?
c logger yalnızca günlük mesajları için metin biçimini destekler. logger
fonksiyonunda çağırmanız gerekecektir .
Günlük iletileri etikete veya düzeye göre nasıl filtrelenir?
c logger, günlük mesajlarının gelişmiş filtrelenmesini sunmaz. konfigürasyon dosyasındaki log_level
ile kontrol edebilirsiniz Mesajları etikete veya seviyeye göre filtrelemek istiyorsanız, kendi filtre fonksiyonunuzu yazmanız ve bunu logger
.
Günlük mesajlarını konsol veya dosya dışındaki bir hedefe nasıl gönderirim?
c logger, günlük mesajları için hedef olarak yalnızca konsolu ve dosyayı destekler. Mesajları veritabanı veya web hizmeti gibi başka bir hedefe göndermek istiyorsanız, kendi gönderme işlevinizi yazmanız ve bunu günlükçü işlevinde çağırmanız gerekecektir
.
Sorun durumunda c logger'da hata ayıklama nasıl yapılır?
c logger, kütüphanenin dahili durumu hakkındaki bilgileri görüntüleyen logger_debug
C logger'ın düzgün çalışıp çalışmadığını kontrol etmek için istediğiniz zaman arayabilirsiniz.
Çözüm
c logger, C dili için basit ve etkili bir kayıt kütüphanesidir. Günlük mesajlarını farklı ayrıntı ve kontrol seviyeleriyle bir dosyaya veya konsola yazmanıza olanak tanır. Kurulumu ve kullanımı kolaydır ve bir yapılandırma dosyasıyla özelleştirme olanağı sunar. , belirli özelliklere ve yöntemlere sahip logger nesneleri oluşturmanıza olanak tanıyan nesne yönelimli programlama ilkesine dayanmaktadır c logger, C projelerine zorluk yaşamadan günlük kaydı işlevselliği eklemek isteyen geliştiriciler için ideal bir çözümdür.