欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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)

調用

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

補充知識:python logging定制logstash的json日志格式

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

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

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

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

python下的日志調試用得時logging,改成json也是很好改得。 另外不少老外已經考慮到這樣的需求,已經做了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"
}

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

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

以上這篇python logging通過json文件配置的步驟就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 解決python 文本過濾和清理問題

    解決python 文本過濾和清理問題

    文本過濾和清理所涵蓋的范圍非常廣泛,涉及文本解析和數(shù)據(jù)處理方面的問題。這篇文章主要介紹了解決python 文本過濾和清理問題,需要的朋友可以參考下
    2019-08-08
  • Python中很常用的函數(shù)map()用法實例

    Python中很常用的函數(shù)map()用法實例

    這篇文章主要給大家介紹了關于Python中很常用的函數(shù)map()用法的相關資料,map()函數(shù)是Python的內置函數(shù),會根據(jù)提供的函數(shù)參數(shù),對傳入的序列數(shù)據(jù)進行映射,需要的朋友可以參考下
    2023-10-10
  • python實現(xiàn)ip查詢示例

    python實現(xiàn)ip查詢示例

    這篇文章主要介紹了python實現(xiàn)ip查詢示例,需要的朋友可以參考下
    2014-03-03
  • 詳解Tensorflow數(shù)據(jù)讀取有三種方式(next_batch)

    詳解Tensorflow數(shù)據(jù)讀取有三種方式(next_batch)

    本篇文章主要介紹了Tensorflow數(shù)據(jù)讀取有三種方式(next_batch),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • python第三方庫學習筆記

    python第三方庫學習筆記

    在本篇文章里小編給大家整理了關于python第三方庫學習筆記相關內容,有需要的朋友們可以參考下。
    2020-02-02
  • 基于Python實現(xiàn)網頁文章轉PDF文檔

    基于Python實現(xiàn)網頁文章轉PDF文檔

    有時候看到一篇好的文章,想去保存下來,傳統(tǒng)方式一般是收藏書簽、復制粘貼到文檔或者直接復制鏈接保存,但這也太麻煩了。本文將用Python語言實現(xiàn)將網上的文章轉存為PDF文檔,保存電腦上慢慢看
    2022-05-05
  • Python利用partial偏函數(shù)生成不同的聚合函數(shù)

    Python利用partial偏函數(shù)生成不同的聚合函數(shù)

    本文主要介紹了Python利用partial偏函數(shù)生成不同的聚合函數(shù),利用偏函數(shù)的概念,可以生成一些新的函數(shù),在調用這些新函數(shù)時,不用再傳遞固定值的參數(shù),這樣可以使代碼更簡潔,感興趣的可以了解一下
    2024-03-03
  • Pandas實現(xiàn)自定義Excel格式并導出多個sheet表

    Pandas實現(xiàn)自定義Excel格式并導出多個sheet表

    pandas默認整合XlsxWriter驅動,可以自動化處理excel操作,并提供公式、設置單元格格式、可視化分析圖片等操作,本文就來和大家詳細聊聊
    2023-05-05
  • Python貪吃蛇小游戲實例分享

    Python貪吃蛇小游戲實例分享

    這篇文章主要為大家詳細介紹了Python貪吃蛇小游戲實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Windows下為Python安裝Matplotlib模塊

    Windows下為Python安裝Matplotlib模塊

    這篇文章主要介紹了如何在Windows下為Python安裝Matplotlib模塊的方法,非常的詳細,而且附上了官方的下載地址,小伙伴們操作起來應該毫無壓力了。
    2015-11-11

最新評論