使用Python logger的SocketHandler直接记录到carbon(graphite)?
我尽力通过SocketHandler直接把数据记录到carbon里,但没成功:
logger.conf
的内容是:
[loggers]
keys=root,carbon
[handlers]
keys=carbonHandler
[formatters]
keys=carbonFormatter
[logger_carbon]
level=DEBUG
handlers=carbonHandler
qualname=carbon
propagate=0
[logger_root]
level=DEBUG
handlers=carbonHandler
[handler_carbonHandler]
class=logging.handlers.SocketHandler
level=DEBUG
formatter=carbonFormatter
args=('$HOST', 2003)
[formatter_carbonFormatter]
format=%(message)s %(created)i
然后,我试着用这个记录数据:
import logging
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('carbon')
logger.info('test.python 42')
结果很遗憾,失败了...
不过我可以用这个命令和carbon通信:echo "test.metric 42 $(date +'%s')" | nc $HOST 2003
你能看出问题吗?
我是不是在尝试一些根本行不通的事情?
谢谢你的帮助!
1 个回答
0
假设你的配置文件和现在的一模一样——把配置文件里的“$HOST”替换成实际的主机名。这样做会发生什么呢?如果这样可以正常工作,但你又希望这个名字能根据环境变化,那就试试在配置文件里使用
args=(os.environ['HOST'], 2003)
。