python logging的说明和实例用法
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要介绍"python logging的说明和实例用法",在日常操作中,相信很多人在python logging的说明和实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
千家信息网最后更新 2025年01月22日python logging的说明和实例用法
这篇文章主要介绍"python logging的说明和实例用法",在日常操作中,相信很多人在python logging的说明和实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"python logging的说明和实例用法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
说明
1、输出文件、控制台和Elasticsearch。
输出到控制台只是方便直接查看。
2、输出到文件直接存储,保留所有历史记录的备份。
3、输出到Elasticsearch,直接作为存储和分析的中心。
Kibana可以非常方便地分析和查看运行情况。
实例
import loggingimport sysfrom os import makedirsfrom os.path import dirname, exists from cmreslogging.handlers import CMRESHandler loggers = {} LOG_ENABLED = True # 是否开启日志LOG_TO_CONSOLE = True # 是否输出到控制台LOG_TO_FILE = True # 是否输出到文件LOG_TO_ES = True # 是否输出到 Elasticsearch LOG_PATH = './runtime.log' # 日志文件路径LOG_LEVEL = 'DEBUG' # 日志级别LOG_FORMAT = '%(levelname)s - %(asctime)s - process: %(process)d - %(filename)s - %(name)s - %(lineno)d - %(module)s - %(message)s' # 每条日志输出格式ELASTIC_SEARCH_HOST = 'eshost' # Elasticsearch HostELASTIC_SEARCH_PORT = 9200 # Elasticsearch PortELASTIC_SEARCH_INDEX = 'runtime' # Elasticsearch Index NameAPP_ENVIRONMENT = 'dev' # 运行环境,如测试环境还是生产环境 def get_logger(name=None): """ get logger by name :param name: name of logger :return: logger """ global loggers if not name: name = __name__ if loggers.get(name): return loggers.get(name) logger = logging.getLogger(name) logger.setLevel(LOG_LEVEL) # 输出到控制台 if LOG_ENABLED and LOG_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) # 输出到文件 if LOG_ENABLED and LOG_TO_FILE: # 如果路径不存在,创建日志文件文件夹 log_dir = dirname(log_path) if not exists(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 if LOG_ENABLED and LOG_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 return logger
到此,关于"python logging的说明和实例用法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
输出
文件
实例
日志
控制台
环境
学习
控制
更多
路径
分析
存储
帮助
运行
实用
接下来
全局
历史
只是
备份
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
landmark数据库在哪里
苏州渔客网络技术
罗马字体软件开发
软件开发交税多少
apache服务器教程
北仑有哪几家软件开发
上海生产管理软件开发商
上海金进网络技术有限公司
南京白鸥网络技术
进行校园网络安全教育的目的
随机抽样数据库
计算机网络技术所课程
把图片或视频存于数据库中
DELL 服务器硬盘不支持认证
光环新网服务器托管
开黑啦服务器等级
sae云开发服务器免费2021
数据库下或者
网络安全教育过程记录
网络技术支撑双十一
济南晨平网络技术有限公司级别
数据库时间戳为负数
以下哪种测试属于软件开发
我的世界神奇宝贝喵物语服务器
向数据库插入一条消息用什么方法
通讯网络技术学习
力控 连接网络数据库
数据库安全扫描软件有哪些
网络安全教育主要内容及目的
网络技术支撑双十一