Loglama
- İngilizcesi
- Logging
- Türkçe karşılığı
- günlüğe kaydetme
Kısaca
Loglama, çalışan bir programdaki hata ve istek gibi olaylar hakkında zaman damgalı mesajlar kaydetme pratiğidir; insanlar bunları sonradan inceleyebilir.
Loglama nedir?
Loglama, bir programın çalışırken ne yaptığını yazıya dökmesini sağlamak demektir. Her log kaydı, örneğin alınan bir istek, başarısız olan bir ödeme ya da biten bir iş gibi tek bir olayı bir zaman damgası, bir önem seviyesi ve yararlı ayrıntılarla birlikte kaydeder. Log'lar, bir şeyler ters gittiğinde geliştiricilerin baktığı ilk yerdir, çünkü neyin ve hangi sırayla olduğunu gösterir.
Uygulamalar log'ları düz print ifadeleri yerine bir loglama kütüphanesi üzerinden yazar; böylece her kayıt tutarlı bir biçim ile DEBUG, INFO, WARN ya da ERROR gibi bir seviye alır ve gürültülü seviyeler canlı ortamda kapatılabilir. Modern sistemler, her kaydın userId ve durationMs gibi adlandırılmış alanlara sahip bir JSON nesnesi olduğu yapılandırılmış loglamayı (structured logging) tercih eder; bu, log'ların makineler tarafından aranmasını ve filtrelenmesini kolaylaştırır. Konteynerlerde uygulamalar genellikle log'ları standart çıktıya yazar ve bir log toplayıcı bunları, her sunucudaki log'ların birlikte aranabildiği merkezi bir depoya gönderir.
Log, bir geminin seyir defteri ya da uçuş kaydedicisi gibidir: araştırmacıların olaydan sonra yeniden oynatabileceği sıralı, yazılı bir olay geçmişi. Log'lar hata ayıklama, kimin ne yaptığını denetleme, güvenlik soruşturmaları ve belirli hatalara karşı uyarı oluşturma için kullanılır. İyi log'lar, istek kimlikleri gibi yararlı olacak kadar bağlam içerir, ancak güvenlik ve gizlilik sorunları yaratacak parolaları, gizli bilgileri ya da gereksiz kişisel verileri asla içermez.
Loglama sıklıkla gözlemlenebilirliğin diğer iki sütunu olan metrikler ve dağıtık izleme ile karıştırılır. Log tek bir olayı ayrıntılı biçimde tanımlar, metrik dakikadaki hata sayısı gibi zaman içinde toplanan bir sayıdır, trace ise tek bir isteği birçok servis boyunca takip eder. Log'lar en ayrıntılı sinyaldir ama büyük ölçekte saklaması da en pahalı olanıdır; bu yüzden ekipler genellikle eğilimler için metriklere, inceleme için log'lara güvenir.
Önemli noktalar
- Loglama, çalışan bir programın zaman damgalı olaylarını sonradan incelemek üzere kaydeder.
DEBUG,INFO,WARNveERRORgibi log seviyeleri önemi belirtir ve hacmi kontrol eder.- Yapılandırılmış loglama, kayıtları adlandırılmış alanlarla JSON olarak yazar ve bu da sorgulamayı kolaylaştırır.
- Merkezi log toplama, ekiplerin birçok sunucunun log'larını tek yerde aramasını sağlar.
- Parolaları, token'ları veya diğer gizli bilgileri asla log'lara yazmayın.
Örnek
import logging
logging.basicConfig(
level=logging.INFO, # DEBUG messages are dropped at this level
format="%(asctime)s %(levelname)s %(name)s %(message)s",
)
log = logging.getLogger("checkout")
log.debug("Cart contents: %s", cart) # not written
log.info("Payment accepted for order %s", order_id)
log.warning("Payment retry %d for order %s", attempt, order_id)
log.error("Payment failed for order %s", order_id, exc_info=True)
# 2026-09-30 14:02:11,512 INFO checkout Payment accepted for order A-1042Sık sorulan sorular
Log seviyeleri nedir?
Log seviyeleri bir mesajın ne kadar önemli olduğunu etiketler; yaygın olarak DEBUG, INFO, WARN, ERROR ve bazen FATAL kullanılır. Bir program asgari bir seviyeyle yapılandırılır; böylece ayrıntılı hata ayıklama mesajları geliştirme sırasında gösterilir, canlı ortamda gizlenir.
Yapılandırılmış loglama nedir?
Yapılandırılmış loglama, her log kaydını serbest biçimli metin yerine adlandırılmış alanlara sahip veri, genellikle JSON olarak yazar. Bu, log araçlarının kırılgan metin ayrıştırması olmadan kayıtları filtrelemesini ve toplamasını sağlar; örneğin tek bir orderId için her hatayı bulmak gibi.
Log'lar ile metrikler arasındaki fark nedir?
Log, tek bir olayı ayrıntılarıyla kaydeder; örneğin tek bir başarısız ödemeyi ve hata mesajını. Metrik ise dakikadaki başarısız ödeme sayısı gibi zaman içinde ölçülen bir sayıdır; saklaması daha ucuzdur ve gösterge panelleri ile uyarılar için daha uygundur.
İlgili sayfalar
- GözlemlenebilirlikDevOps ve Bulut, s. 22Gözlemlenebilirlik, çalışan bir yazılım sisteminin içinde olup biteni log, metrik ve trace verilerini toplayıp analiz ederek anlayabilme yeteneğidir.
- MetriklerDevOps ve Bulut, s. 33Metrikler, bir sistemden zamanla toplanan istek oranı, hata oranı ve CPU kullanımı gibi sayısal ölçümlerdir; panolar, uyarılar ve planlama için kullanılır.
- Dağıtık İzlemeDevOps ve Bulut, s. 11Dağıtık izleme, tek bir isteği birçok servis boyunca takip eden; her adımın ne kadar sürdüğünü ve nerede başarısız olduğunu kaydeden bir tekniktir.
- Hata ayıklamaProgramlamanın Temelleri, s. 24Hata ayıklama, bir programın neden yanlış davrandığını bulma, hatalı kodu saptama ve düzeltme sürecidir; çoğu zaman hata ayıklayıcı adlı bir araç kullanılır.
- JSONBackend ve API'ler, s. 24JSON, yapılandırılmış veriyi anahtar-değer çiftleri ve listelerle saklayıp aktarmaya yarayan, insanın da makinenin de okuyabildiği hafif bir metin biçimidir.
- Secrets ManagementGüvenlik, s. 34Secrets management, parola, API anahtarı ve token gibi hassas kimlik bilgilerini güvenle saklama, dağıtma, döndürme ve denetleme pratiğidir.
- Stack traceProgramlamanın Temelleri, s. 51Stack trace, bir hata oluştuğu anda devam eden fonksiyon çağrılarının listesidir; hatanın çıktığı satırdan programın başladığı yere kadar uzanır.
- OpenTelemetryDevOps ve Bulut, s. 35OpenTelemetry, yazılımdan trace, metrik ve log toplayıp bunları herhangi bir izleme backend'ine göndermek için açık bir standart ve araç takımıdır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin