2012-07-15 3 views
1

Я не могу заставить SysLogHandler работать, и это заставляет меня сходить с ума.syslog работает, но SysLogHandler не

Это мой код:

import logging 
    import logging.handlers 

    logger = logging.getLogger() 
    sh = logging.handlers.SysLogHandler(address='/dev/log/', facility='local1') 
    logger.addHandler(sh) 

    logger.setLevel(logging.INFO) 
    logger.info('Test') 

И не работает. Я поставил LOCAL1 к выходу в /var/log/test.log в моем syslog.conf и ничего не появляется, однако, если я использую системный журнал он работает, как ожидалось:

import syslog 

    syslog.syslog(syslog.LOG_LOCAL1, 'Test from syslog') 

я на Debian 6, в приложение служил корыто uwsgi.

Вы можете мне помочь?

+0

Где именно вы разместили этот код? Это должен быть самый первый код, который будет выполнен в вашем приложении. – Tisho

+0

@ Тишо в функции, называемой '__main__', как первая вещь. – gbr

+0

Решена ли ваша проблема? – Tshepang

ответ

0

Возможно, вы имеете в виду logger.setLevel() вместо logger.setLever().

Кроме того, почему вы переизбрали import logging.handlers?

+0

Да, это опечатка, код правильный. И я повторно импортирую logging.handlers, потому что без я получаю AttributeError. – gbr

1

Имя сокета UNIX (аргумент адреса) должно заканчиваться именем файла, а не «/». Поэтому обычно должен быть адрес = '/ dev/log' на linux.