İçeriğe geç
Muslu Yüksektepe

colorlg

Terminal loglarını renklendiren ve istenmeyen kayıtları süzen, bağımlılığı olmayan hafif bir Python logger'ı.

colorlg, Python'un kendi logging modülü üzerine kurulu, terminal çıktısını renkli ve okunur hâle getiren hafif bir log kütüphanesi. Her log seviyesini farklı bir renkle gösteriyor ve belirli dosyalardan gelen gereksiz log kayıtlarını süzebiliyor. Hiçbir dış bağımlılığı yok. 2026 yılının Mart ayında PyPI'da yayınladım; şu anki sürümü 1.0.2.

Amaç

Projelerimde print() yerine her zaman bir logger kullanırım. Ancak Python'un varsayılan log çıktısı tek renkli olduğu için hızlı akan bir terminalde hata ve uyarı satırlarını gözden kaçırmak çok kolay. Bunun yanında, kullandığım bazı kütüphaneler kendi iç işleyişleriyle ilgili çok sayıda log kaydı üretiyor ve bu kayıtlar benim uygulamamın mesajlarını boğuyor. colorlg'yi bu iki sorunu çözmek için yazdım. Her projede aynı biçimlendirici ve süzgeç kodunu kopyalamak yerine, tek satırlık bir import ile aynı düzene sahip olmak istedim.

Nasıl çalışır

Kütüphanenin merkezinde iki sınıf ve bir kurulum fonksiyonu var. ColorFormatter, Python'un logging.Formatter sınıfından türetilmiş bir biçimlendirici. Her log kaydını zaman damgası, seviye, dosya adı, satır numarası ve mesajdan oluşan sabit genişlikli sütunlar hâlinde yazıyor. Seviye için 8, dosya adı için 35, satır numarası için 5 karakterlik alan ayrılıyor; böylece alt alta gelen satırlar düzgün hizalanıyor. Satırın tamamı seviyeye göre ANSI renk koduyla boyanıyor. DEBUG camgöbeği, INFO yeşil, WARNING sarı, ERROR kırmızı ve CRITICAL eflatun renkte görünüyor. ANSI renk kodları, terminale metnin hangi renkte gösterileceğini söyleyen özel karakter dizileri.

ExcludeClientPyFilter, logging.Filter sınıfından türetilmiş bir süzgeç. Kendisine verilen dosya adları listesindeki dosyalardan gelen kayıtları eliyor. Liste verilmezse varsayılan olarak _client.py dosyasından gelen kayıtları engelliyor.

setup_logger fonksiyonu bu iki parçayı bir araya getiriyor. Log seviyesini, süzülecek dosyaları, renk kullanılıp kullanılmayacağını ve çıktının hangi akışa yazılacağını parametre olarak alıyor. Renk kapatılırsa aynı sütun düzeni renksiz olarak kullanılıyor. Kütüphane içe aktarıldığında bu fonksiyonla kurulmuş, kullanıma hazır bir logger nesnesi de oluşturuluyor.

Öne çıkan özellikler

  • from colorlg import logger satırından sonra hiçbir ayar yapmadan renkli log yazmaya başlamak mümkün.
  • Sabit genişlikli sütunlar sayesinde zaman, seviye, dosya ve satır bilgileri her satırda aynı hizada duruyor.
  • İstenmeyen dosyalardan gelen kayıtlar bir liste vererek susturulabiliyor.
  • Renkli çıktı kapatılabildiği için loglar bir dosyaya ya da renk desteklemeyen bir ortama yazılırken de aynı düzen korunuyor.
  • Biçimlendirici ve süzgeç ayrı sınıflar olduğu için kendi logging yapılandırmasına yalnızca birini eklemek isteyen de bunu yapabiliyor.

Teknik altyapı

colorlg yalnızca Python standart kütüphanesini kullanıyor; logging ve datetime modülleri dışında hiçbir şeye ihtiyaç duymuyor. Paket pyproject.toml ile setuptools üzerinden derleniyor, Python 3.7 ve üzerini destekliyor ve MIT lisansıyla dağıtılıyor. Geliştirme için isteğe bağlı olarak pytest, black, flake8 ve mypy tanımlı, ancak bunlar kullanıcı kurulumuna dahil değil. Varsayılan logger kendi adıyla oluşturuluyor ve kayıtlarını üst logger'lara iletmiyor; bu sayede aynı mesajın iki kez basılması önleniyor.

Kullanım alanları

  • Komut satırı araçlarında ve arka plan servislerinde hata ile uyarıları ilk bakışta fark etmek için kullanırım.
  • HTTP istemcisi gibi çok konuşan kütüphanelerin log kayıtlarını dosya adına göre susturarak kendi uygulamamın mesajlarını öne çıkarırım.
  • Birden fazla projede aynı log biçimini kullanmak, logları okurken ve karşılaştırırken işimi kolaylaştırıyor.
  • Python öğrenenlere logging modülünde biçimlendirici ve süzgeç yazmanın nasıl yapıldığını göstermek için kısa ve anlaşılır bir örnek oluyor.
Kategori
Python kütüphaneleri
Yıl
2026

Teknolojiler

  • Python
  • PyPI
  • Logging

Bağlantılar

  • PyPI https://pypi.org/project/colorlg/

Tüm projelere dön