Python logging,python logging模块默认日志

  Python logging,python logging模块默认日志

  说明

  1、输出文件、控制台和弹性搜索。

  输出到控制台只是方便直接查看。

  2、输出到文件直接存储,保留所有历史记录的备份。

  3、输出到弹性搜索,直接作为存储和分析的中心。

  基巴纳可以非常方便地分析和查看运行情况。

  实例

  导入日志记录

  importsys

  fromosimportmakedirs

  fromos.pathimportdirname,存在

  fromcmreslogging。handlersimportcmreshandler

  记录器={}

  LOG_ENABLED=True#是否开启日志

  LOG_TO_CONSOLE=True#是否输出到控制台

  LOG_TO_FILE=True#是否输出到文件

  LOG_TO_ES=True#是否输出到弹性搜索

  LOG_PATH= ./runtime.log#日志文件路径

  LOG_LEVEL=DEBUG#日志级别

  LOG _ FORMAT= %(级别名)s-%(ASC时间)s-process :%(进程)d-%(文件名)s-%(名称)s-%(行号)d-%(模块)s-%(消息)s #每条日志输出格式

  ELASTIC _ SEARCH _ HOST= es HOST #弹性搜索主机

  ELASTIC _ SEARCH _ PORT=9200 #弹性搜索端口

  ELASTIC _ SEARCH _ INDEX= runtime # ELASTIC SEARCH INDEX name

  APP _ ENVIRONMENT= dev #运行环境,如测试环境还是生产环境

  defget_logger(name=None):

  getloggerbyname

  : paramname :记录器的名称

  :返回:日志

  全球记录者

  ifnotname:name=__name__

  ifloggers.get(name):

  returnn

  bsp;loggers.get(name)

  

  logger=logging.getLogger(name)

  logger.setLevel(LOG_LEVEL)

  

  #输出到控制台

  ifLOG_ENABLEDandLOG_TO_CONSOLE:

  stream_handler=logging.StreamHandler(sys.stdout)

  stream_handler.setLevel(level=LOG_LEVEL)

  formatter=logging.Formatter(LOG_FORMAT)

  stream_handler.setFormatter(formatter)

  logger.addHandler(stream_handler)

  

  #输出到文件

  ifLOG_ENABLEDandLOG_TO_FILE:

  #如果路径不存在,创建日志文件文件夹

  log_dir=dirname(log_path)

  ifnotexists(log_dir):makedirs(log_dir)

  #添加FileHandler

  file_handler=logging.FileHandler(log_path,encoding='utf-8')

  file_handler.setLevel(level=LOG_LEVEL)

  formatter=logging.Formatter(LOG_FORMAT)

  file_handler.setFormatter(formatter)

  logger.addHandler(file_handler)

  

  #输出到Elasticsearch

  ifLOG_ENABLEDandLOG_TO_ES:

  #添加CMRESHandler

  es_handler=CMRESHandler(hosts=[{'host':ELASTIC_SEARCH_HOST,'port':ELASTIC_SEARCH_PORT}],

  #可以配置对应的认证权限

  auth_type=CMRESHandler.AuthType.NO_AUTH,

  es_index_name=ELASTIC_SEARCH_INDEX,

  #一个月分一个Index

  index_name_frequency=CMRESHandler.IndexNameFrequency.MONTHLY,

  #额外增加环境标识

  es_additional_fields={'environment':APP_ENVIRONMENT}

  )

  es_handler.setLevel(level=LOG_LEVEL)

  formatter=logging.Formatter(LOG_FORMAT)

  es_handler.setFormatter(formatter)

  logger.addHandler(es_handler)

  

  #保存到全局loggers

  loggers[name]=logger

  returnlogger

以上就是python logging常见的解决方案,希望对大家有所帮助。更多Python学习指路:python基础教程

  

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: