Как изменить «тег» при входе в системный журнал с «Неизвестно»? - PullRequest
16 голосов
/ 03 марта 2012

Я хорошо захожу в системный журнал, но не могу понять, как указать «тег».В настоящее время в журнале публикуется следующее:

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',
            }
    }
}

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

Ответы [ 2 ]

13 голосов
/ 28 июня 2012

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

Сделайте это: 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')
4 голосов
/ 07 сентября 2015

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

Если вам доведется регистрировать сообщения в системном журнале напрямую, используя 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
...