最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2020年04月27日 09:55:41   作者:m笑忘書  
這篇文章主要介紹了python logging通過json文件配置的步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

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 os
import json
import logging
import logging.config


def 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 logging
import logstash
import sys

host = '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 message
extra = {
 '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 logging
import logstash

# AMQP parameters
host = 'localhost'
username = 'guest'
password= 'guest'
exchange = 'logstash.py'

# get a logger and set logging level
test_logger = logging.getLogger('python-logstash-logger')
test_logger.setLevel(logging.INFO)

# add the handler
test_logger.addHandler(logstash.AMQPLogstashHandler(version=1,
       host=host,
       durable=True,
       username=username,
       password=password,
       exchange=exchange))

# log
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.')

try:
 1/0
except:
 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"
}

我這里簡(jiǎn)單提一下,這個(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文件配置的步驟就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python使用ctypes調(diào)用第三方庫時(shí)出現(xiàn)undefined?symbol錯(cuò)誤詳解

    python使用ctypes調(diào)用第三方庫時(shí)出現(xiàn)undefined?symbol錯(cuò)誤詳解

    python中時(shí)間的庫有time和datetime,pandas也有提供相應(yīng)的時(shí)間處理函數(shù),下面這篇文章主要給大家介紹了關(guān)于python使用ctypes調(diào)用第三方庫時(shí)出現(xiàn)undefined?symbol錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Python摳圖教程之使用OpenCV實(shí)現(xiàn)背景去除

    Python摳圖教程之使用OpenCV實(shí)現(xiàn)背景去除

    這篇文章主要給大家介紹了關(guān)于Python摳圖教程之使用OpenCV實(shí)現(xiàn)背景去除的相關(guān)資料,背景去除是在很多視覺應(yīng)用里的主要預(yù)處理步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Python圓周率算法不只是3.14更多玩法揭秘

    Python圓周率算法不只是3.14更多玩法揭秘

    本篇博客將引領(lǐng)讀者穿越數(shù)學(xué)、計(jì)算和可視化的領(lǐng)域,通過豐富的示例代碼,揭示π的獨(dú)特之處,無論是計(jì)算π的各種方法、應(yīng)用領(lǐng)域中的角色,還是π作為無理數(shù)的特性,我們將通過Python的鏡頭,發(fā)現(xiàn)這個(gè)數(shù)字在數(shù)學(xué)世界中的非凡之處
    2024-01-01
  • PyQt 異步任務(wù)多線程的幾種方案示例詳解

    PyQt 異步任務(wù)多線程的幾種方案示例詳解

    文章總結(jié)了多線程異步編程的不同方式,包括QThread、QThreadPool和concurrent.futures,分別適用于不同場(chǎng)景,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-01-01
  • 利用Python中的內(nèi)置open函數(shù)讀取二進(jìn)制文件

    利用Python中的內(nèi)置open函數(shù)讀取二進(jìn)制文件

    這篇文章主要介紹了利用Python實(shí)現(xiàn)讀取二進(jìn)制文件,文章嘗試使用Python中的內(nèi)置open函數(shù)使用默認(rèn)讀取模式讀取zip文件,下文詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • python測(cè)試開發(fā)django之使用supervisord?后臺(tái)啟動(dòng)celery?服務(wù)(worker/beat)

    python測(cè)試開發(fā)django之使用supervisord?后臺(tái)啟動(dòng)celery?服務(wù)(worker/beat)

    Supervisor是用Python開發(fā)的一個(gè)client/server服務(wù),是Linux/Unix系統(tǒng)下的一個(gè)進(jìn)程管理工具,不支持Windows系統(tǒng),這篇文章主要介紹了python測(cè)試開發(fā)django之使用supervisord?后臺(tái)啟動(dòng)celery?服務(wù)(worker/beat),需要的朋友可以參考下
    2022-07-07
  • python3 traceback模塊來追蹤和打印異常信息

    python3 traceback模塊來追蹤和打印異常信息

    本文主要介紹了python3 traceback模塊來追蹤和打印異常信息,這個(gè)模塊提供了許多函數(shù)來處理異常,并且能夠輸出異常的堆棧信息,感興趣的可以了解一下
    2024-02-02
  • python實(shí)現(xiàn)圖片插入文字

    python實(shí)現(xiàn)圖片插入文字

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖片插入文字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Centos7 Python3下安裝scrapy的詳細(xì)步驟

    Centos7 Python3下安裝scrapy的詳細(xì)步驟

    這篇文章主要介紹了Centos7 Python3下安裝scrapy的詳細(xì)步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • 基于python goto的正確用法說明

    基于python goto的正確用法說明

    這篇文章主要介紹了基于python goto的正確用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03

最新評(píng)論

酒泉市| 阿巴嘎旗| 涪陵区| 昆山市| 平邑县| 武胜县| 察隅县| 木里| 凯里市| 皮山县| 黑水县| 共和县| 安化县| 呼玛县| 阿荣旗| 卢龙县| 凤冈县| 微山县| 平泉县| 麻江县| 新巴尔虎右旗| 太仆寺旗| 天峻县| 建德市| 亚东县| 老河口市| 宜兰县| 靖西县| 霍城县| 湄潭县| 阜城县| 樟树市| 保亭| 明光市| 玛多县| 苏尼特左旗| 青阳县| 彭水| 东乌珠穆沁旗| 双流县| 普洱|