понедельник, 1 июня 2015 г.

Python: пишем в syslog

Хороший стартовый пример
https://gist.github.com/sweenzor/1782457

123456789101112131415161718192021
import logging
import logging.handlers
 
log = logging.getLogger(__name__)
 
log.setLevel(logging.DEBUG)
 
handler = logging.handlers.SysLogHandler(address = '/dev/log')
 
formatter = logging.Formatter('%(module)s.%(funcName)s: %(message)s')
handler.setFormatter(formatter)
 
log.addHandler(handler)
 
 
def hello():
log.debug('this is debug')
log.critical('this is critical')
 
if __name__ == '__main__':
hello()

123
matt@Jenkins:~$ tail -n 2 /var/log/syslog
Feb 9 11:56:19 Jenkins logtest.hello: this is debug
Feb 9 11:56:19 Jenkins logtest.hello: this is critical

Нюансы.
Для SysLogHandler обязателен адрес, у линукса /dev/log, у macos что-то вроде /var/run/syslog, надо уточнять.

Также можно сделать так
handler = logging.handlers.SysLogHandler(address = ('localhost',514), facility=19)
и тут localhost можно заменить на удаленный хост, хотя лучше поручить пересылку логов тому же rsyslog

Также есть менее удобный модуль syslog
import syslog
syslog.openlog( 'myTestLog', 0, syslog.LOG_LOCAL4 )
syslog.syslog( '%%TEST-6-LOG: Log msg: %s' % 'test msg' )

Ну и напоследок интересный линк
http://help.papertrailapp.com/kb/configuration/configuring-centralized-logging-from-python-apps/

Комментариев нет:

Отправить комментарий