30 Mayıs 2014 Cuma

Python - Syslog Loglama AltYapısının Kullanımı

Özellikle komut satırından çalıştırılan uygulamalar için gerçekleştirilen detaylarını kayıt altına almak, hata mesajlarını kayıt altına almak vb sebeplerden dolayı loglama (işlem kaydı) işlemlerinin gerçekleştirilmesi gerekmektedir.

Bu amaçla kullanılan farklı kütüphaneler bulunmaktadır. Linux/Unix sistemlerde özellikle bu amaç için geliştirilmiş ve en çok tercih edilen servis ile aynı ismi taşıyan syslog kütüphanesi kullanılmaktadır. Aşağıdaki örnek ile syslog servisini kullanan örnek bir loglama servisi geliştirilmiştir. 

#!/usr/bin/python


try:

        import logging
        import logging.handlers
        import sys
except ImportError,e:
        import sys
        sys.stdout.write("%s\n" %e)
        sys.exit(1)

class Log:
        logger = None
        @staticmethod

        def log_message(level, message):
                if not Log.logger:
                        Log.logger = logging.getLogger("Galkan")
                        syslog_handler = logging.handlers.SysLogHandler( address = ( '127.0.0.1', 514 ), facility = logging.handlers.SysLogHandler.LOG_LOCAL5 )
                        formatter = logging.Formatter('[%(levelname)s] - %(message)s')
                        syslog_handler.setFormatter(formatter)
                        Log.logger.addHandler( syslog_handler )

                if level == 1:
                        Log.logger.setLevel( logging.INFO )
                        Log.logger.info(message)
                elif level == 2:
                        Log.logger.setLevel( logging.WARN )
                        Log.logger.warn(message)
                elif level == 3:
                        Log.logger.setLevel( logging.ERROR )
                        Log.logger.error(message)
                else:
                        Log.logger.setLevel( logging.INFO )
                        Log.logger.info(message)

if __name__ == "__main__":
     Log.log_message(1, "Mesaj")


Syslog servisinin belirtildiği şekilde çalıştırılabilmesi için gerekli yapılandırma ayarları belirtildiği gibi olmaktadır. Belirtilen log seviyesi için dosyanın tam yolu ve ardından gerekli syslog modül ve ip, port yapılandırma bilgileri belirtilmektedir.
# vi /etc/rsyslog.d/50-default.conf
local5.info                             -/var/log/galkan.log
# vi /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
$UDPServerAddress 127.0.0.1
Yapılandırmanın ardından syslog servisi yeniden başlatılarak yapılandırmanın aktif hale gelmesi sağlanmaktadır.  Bu durum aşağıdaki şekilde  görülebilir.
# netstat -nlput | grep 514
udp        0      0 0.0.0.0:514             0.0.0.0:*                           28687/rsyslogd
İlgili programın çalışmasının ardından belirtilen dosya içeriğine bakıldığında aşağıdaki içerik görüntülenecektir.

0 yorum :

Yorum Gönder