Подтвердить что ты не робот

Как изменить "тег" при входе в syslog из "Неизвестно"?

Я вхожу в syslog в порядке, но не могу определить, как указать "тег". В настоящее время журнал регистрирует это:

Mar  3 11:45:34 TheMacMini Unknown: INFO FooBar

но я хочу, чтобы "Неизвестный" был настроен на что-то. например:

Mar  3 11:45:34 TheMacMini Foopybar: INFO FooBar

Если я использую logger из командной строки, его можно контролировать с помощью опции -t...

$ logger -t Foopybar FooBar && tail -1 /var/log/system.log
Mar  3 12:05:00 TheMacMini Foopybar[4566]: FooBar

Но запись с python я, похоже, не могу указать тег:

import logging
logging.info("FooBar")

Просто дает мне тег "Неизвестный" , показанный вверху. Я определил эту спецификацию:

LOGGING = {
    'version': 1,
    'formatters': {
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'syslog':{
            'address': '/var/run/syslog',
            'class': 'logging.handlers.SysLogHandler',
            'facility': 'local2',
            'formatter': 'simple'
        }
    },
    'loggers': {
        '': {
            'handlers': ['syslog'],
            'level': 'INFO',
            }
    }
}

Как указать тег, чтобы он не всегда "Неизвестный" ?

4b9b3361

Ответ 1

Простой способ пометки сообщений журнала

Сделайте это: logging.info("TagName: FooBar") и ваше сообщение будет помечено! Вам просто нужно запустить все ваши сообщения с помощью "TagName:". И это, конечно, не очень элегантно.

Лучшее решение

Настройка регистратора:

log = logging.getLogger('name')
address=('log-server',logging.handlers.SYSLOG_UDP_PORT)
facility=logging.handlers.SysLogHandler.LOG_USER
h=logging.handlers.SysLogHandler( address,facility )
f = logging.Formatter('TagName: %(message)s')
h.setFormatter(f)
log.addHandler(h)

И используйте его:

log.info('FooBar')

Ответ 2

Я добавляю это только ради завершения, хотя ответ @sasha абсолютно прав.

Если вы случайно регистрируете сообщения в syslog с помощью syslog.syslog, вы можете установить тег с помощью функции syslog.openlog:

import syslog
syslog.openlog('foo')
syslog.syslog('bar')

Возвращаясь к оболочке linux:

$ tail -f /var/log/syslog
Sep  7 07:01:58 dev-balthazar foo: bar