Ö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.
Kod:
#!/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.
Kod:
# 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.
Kod:
# 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.
Kod:
# cat /var/log/galkan.log
Apr 29 14:52:33 localhost [INFO] - Mesaj
Saygılarımla. //Memotaz7