Python 如何更改';标签';从';未知';?
我正在登录syslog,但无法确定如何指定“标记”。日志记录当前发布以下内容:Python 如何更改';标签';从';未知';?,python,django,osx-lion,Python,Django,Osx Lion,我正在登录syslog,但无法确定如何指定“标记”。日志记录当前发布以下内容: Mar 3 11:45:34 TheMacMini Unknown: INFO FooBar 但我想把“未知”设置为某个值。例如: Mar 3 11:45:34 TheMacMini Foopybar: INFO FooBar 如果我从命令行使用记录器,它可以通过-t选项进行控制 $ logger -t Foopybar FooBar && tail -1 /var/log/system.lo
Mar 3 11:45:34 TheMacMini Unknown: INFO FooBar
但我想把“未知”设置为某个值。例如:
Mar 3 11:45:34 TheMacMini Foopybar: INFO FooBar
如果我从命令行使用记录器
,它可以通过-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',
}
}
}
如何指定标记,使其不总是“未知”?标记日志消息的简单方法
这样做:
logging.info(“标记名:FooBar”)
您的邮件将被标记!您只需要以“标记名:”开始所有消息。这当然不是很优雅
更好的解决方案
设置记录器:
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')
我添加这个只是为了完成,尽管@sasha的答案绝对正确 如果碰巧使用
syslog.syslog
直接将消息记录到syslog,则可以使用syslog.openlog
功能设置标记:
import syslog
syslog.openlog('foo')
syslog.syslog('bar')
回到linux shell:
$ tail -f /var/log/syslog
Sep 7 07:01:58 dev-balthazar foo: bar
完成后,需要记住调用syslog.closelog()。