午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

python logging通過json文件配置的步驟

瀏覽:123日期:2022-07-27 11:37:33

logconfig.json

{ 'version':1, 'disable_existing_loggers':false, 'formatters':{ 'simple':{ 'format':'[%(asctime)s - %(levelname)s - line(%(lineno)d) - %(filename)s]: %(message)s', 'datefmt':'%Y-%m-%d %H:%M:%S' } }, 'handlers':{ 'console':{ 'class':'logging.StreamHandler', 'level':'DEBUG', 'formatter':'simple', 'stream':'ext://sys.stdout' }, 'info_file_handler':{ 'class':'logging.handlers.TimedRotatingFileHandler', 'level':'INFO', 'formatter':'simple', 'filename':'../log/info.log', 'when':'H', 'interval':1, 'backupCount':50, 'encoding':'utf8' }, 'error_file_handler':{ 'class':'logging.handlers.TimedRotatingFileHandler', 'level':'ERROR', 'formatter':'simple', 'filename':'../log/errors.log', 'when':'H', 'interval':1, 'backupCount':50, 'encoding':'utf8' } }, 'loggers':{ 'my_module':{ 'level':'ERROR', 'handlers':['info_file_handler'], 'propagate':'no' } }, 'root':{ 'level':'INFO', 'handlers':['console','info_file_handler','error_file_handler'] }}

log_utility.py

import osimport jsonimport loggingimport logging.configdef setup_logging(default_path='logconfig.json',default_level=logging.DEBUG): path = default_path if os.path.exists(path): with open(path,'r') as f: config = json.load(f) logging.config.dictConfig(config) else: logging.basicConfig(level=default_level)

調(diào)用

config_path = sys.path[0] + ’/logconfig.json’log_utility.setup_logging(config_path)

補(bǔ)充知識(shí):python logging定制logstash的json日志格式

最近一直在折騰日志的收集,現(xiàn)在算是收尾了。 寫一篇算python優(yōu)化logstash的方案。

其實(shí)大家都知道logstash調(diào)用grok來解析日志的話,是要消耗cpu的成本的,畢竟是需要正則的匹配的。

根據(jù)logstash調(diào)優(yōu)的方案,咱們可以預(yù)先生成json的格式。 我這邊基本是python的程序,怎么搞尼 ?

有兩種方法,第一種方法是生成json后,直接打入logstash的端口。 還有一種是生成json寫入文件,讓logstash做tail操作的時(shí)候,把一行的日志數(shù)據(jù)直接載入json就可以了。

python下的日志調(diào)試用得時(shí)logging,改成json也是很好改得。 另外不少老外已經(jīng)考慮到這樣的需求,已經(jīng)做了python logstash的模塊。

import loggingimport logstashimport syshost = ’localhost’test_logger = logging.getLogger(’python-logstash-logger’)test_logger.setLevel(logging.INFO)test_logger.addHandler(logstash.LogstashHandler(host, 5959, version=1))# test_logger.addHandler(logstash.TCPLogstashHandler(host, 5959, version=1))test_logger.error(’python-logstash: test logstash error message.’)test_logger.info(’python-logstash: test logstash info message.’)test_logger.warning(’python-logstash: test logstash warning message.’)# add extra field to logstash messageextra = { ’test_string’: ’python version: ’ + repr(sys.version_info), ’test_boolean’: True, ’test_dict’: {’a’: 1, ’b’: ’c’}, ’test_float’: 1.23, ’test_integer’: 123, ’test_list’: [1, 2, ’3’],}test_logger.info(’python-logstash: test extra fields’, extra=extra)

python-logstash自帶了amqp的方案

import loggingimport logstash# AMQP parametershost = ’localhost’username = ’guest’password= ’guest’exchange = ’logstash.py’# get a logger and set logging leveltest_logger = logging.getLogger(’python-logstash-logger’)test_logger.setLevel(logging.INFO)# add the handlertest_logger.addHandler(logstash.AMQPLogstashHandler(version=1, host=host, durable=True, username=username, password=password, exchange=exchange))# logtest_logger.error(’python-logstash: test logstash error message.’)test_logger.info(’python-logstash: test logstash info message.’)test_logger.warning(’python-logstash: test logstash warning message.’)try: 1/0except: test_logger.exception(’python-logstash: test logstash exception with stack trace’)

不管怎么說,最后生成的格式是這樣就可以了。

{ '@source'=>'unknown', '@type'=>'nginx', '@tags'=>[], '@fields'=>{ 'remote_addr'=>'192.168.0.1', 'remote_user'=>'-', 'body_bytes_sent'=>'13988', 'request_time'=>'0.122', 'status'=>'200', 'request'=>'GET /some/url HTTP/1.1', 'request_method'=>'GET', 'http_referrer'=>'http://www.example.org/some/url', 'http_user_agent'=>'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1' }, '@timestamp'=>'2012-08-23T10:49:14+02:00'}

我這里簡單提一下,這個(gè)模塊用的不是很滿意,我在python下把日志打成了json字符串,我原本以為會(huì)像grok那樣,在Es里面,我的這條日志是個(gè)字段的結(jié)構(gòu),而不是這個(gè)日志都在message里面…. 我想大家應(yīng)該明白了我的意思,這樣很是不容易在kibana的搜索…

在kibana搜索,我經(jīng)常上 source:xxx AND level:INFO 結(jié)果正像上面描述的那樣,整條日志,都在@message里面。

以上這篇python logging通過json文件配置的步驟就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 香蕉视频在线网址 | 欧美国产精品一区二区 | 成人在线视频免费看 | 欧美三级一区 | 日本一区二区三区精品 | 理论片91| 91精品国产欧美一区二区 | 中文字幕有码在线 | 黄色av一区二区 | 99热只有这里有精品 | 精品九九九九 | 在线观看欧美精品 | 成人在线毛片 | 成人精品在线观看 | 极品美女一区二区三区 | 日本国产高清 | 噼里啪啦在线观看 | 自拍偷自拍亚洲精品播放 | 中文国产视频 | 久久久久久久久久久国产精品 | 手机在线看a | 日韩精品一 | 新加坡毛片 | 亚洲日本va | 在线观看国产一区二区三区 | 男人亚洲天堂 | 精品久久久久国产 | 亚洲国产欧美另类 | 91精品久久久久久久久久久久 | 亚洲视频免费 | www国产在线观看 | 99在线观看精品视频 | 色婷婷18 | 超碰91在线| 综合色婷婷一区二区亚洲欧美国产 | 懂色av一区二区夜夜嗨 | 美女天天干| 草草影院欧美 | 国产专区在线播放 | 人人艹视频 | 国产精品久久久久久久久久久久久久久久 |