Python3 日志输出及配置

logging 日志同时输出到控制台(踩坑:python2 vs python3使用差异) 一段python3 生效的代码: import logging for handler in logging.root.handlers[:]: logging.root.removeHandler(handler) logging.basicConfig( level=logging.DEBUG, format="%(asctime)s-[%(levelname)s]-%(message)s", handlers=[ logging.FileHandler("log"), logging 阅读详情

Python3 日志输出及配置

目录结构如下:

.
├── conf
│   ├── development.conf
│   ├── logging.conf
│   ├── production.conf
│   └── testing.conf
├── data
├── logs
│   ├── root.log
│   └── webben.log
└── src
    ├── cli.py
    ├── log.py
    ├── trans_master.py
    ├── trans_worker.py
    └── utils.py

log.py 文件

#!/usr/bin/python

import logging,logging.config;

logging.config.fileConfig('conf/logging.conf');

if __name__ == '__main__':
    logger = logging.getLogger('webben.user');                                           
    logger.debug('Hello Debug Webben');
    logger.info('Hello Info Webben');
    logger.error('Hello Error Webben');

logging.conf 配置文件

[loggers]
keys=root,webben

[handlers]
keys=root,webben

[formatters]
keys=rootFmt,webbenFmt


[logger_root]
level=NOTSET
handlers=root
propagate=1
qualname=compiler.parser

[handler_root]
class=FileHandler
level=DEBUG
formatter=rootFmt
args=('logs/root.log','a+')

[formatter_rootFmt]
format= %(levelname)s %(threadName)s %(asctime)s:   %(message)s
datefmt=%H:%M:%S


[logger_log]
level=DEBUG
handlers=webben
propagate=1
qualname=compiler.parser

[logger_webben]
level=DEBUG
handlers=webben
propagate=0
qualname=webben

[handler_webben]
class=FileHandler
level=DEBUG
formatter=webbenFmt
args=('logs/webben.log','a+')

[formatter_webbenFmt]
format=%(asctime)s - %(process)d - %(levelname)s - %(name)s - %(message)s
datefmt=

按时间切割日志

[loggers]
keys=root,qianqian

[handlers]
keys=consoleHandler,fileHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=ERROR
handlers=consoleHandler,fileHandler
propagate=0
qualname=

[logger_qianqian]
level=DEBUG
handlers=consoleHandler,fileHandler
propagate=1
qualname=

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[handler_fileHandler]
class=logging.handlers.TimedRotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('../logs/qianqian.log','midnight')

[formatter_simpleFormatter]
format=%(asctime)s - %(process)d - %(levelname)s - %(name)s - %(message)s
datefmt=


关于 formatter 的配置,采用的是%(<dict key>)s的形式,就是字典的关键字替换。提供的关键字包括:

格式说明
%(name)s日志记录器(日志通道)的名称。
%(levelno)s消息的数字日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL)。
%(levelname)s消息的文本日志级别 (‘DEBUG’, ‘INFO’, ‘WARNING’, ‘ERROR’, ‘CRITICAL’)。
%(pathname)s发出日志调用的源文件的完整路径名 (if available)
%(filename)s路径名的文件名部分。
%(module)s模块(文件名的一部分)。
%(funcName)s包含日志调用的函数的名称。
%(lineno)d发出日志调用的源代码行号(如果可用)
%(created)f创建LogRecord的时间 (as returned by time.time()).
%(relativeCreated)d创建LogRecord的时间(以毫秒为单位),相对于加载日志模块的时间。
%(asctime)s创建LogRecord的人类可读时间。默认情况下,
这是“2003-07-08 16:49:45,896”(逗号后面的数字是毫秒部分)。
%(msecs)d创建LogRecord的毫秒部分。
%(thread)d线程ID(如果可用)。
%(threadName)s线程名(如果可用)。
%(process)d进程ID(如果可用)。
%(message)s日志消息,计算为msg % args。

关于 Handler 配置说明

[handler_hand02]
class=FileHandler
level=DEBUG
formatter=form02
args=('python.log', 'w')

[handler_hand03]
class=handlers.SocketHandler
level=INFO
formatter=form03
args=('localhost', handlers.DEFAULT_TCP_LOGGING_PORT)

[handler_hand04]
class=handlers.DatagramHandler
level=WARN
formatter=form04
args=('localhost', handlers.DEFAULT_UDP_LOGGING_PORT)

[handler_hand05]
class=handlers.SysLogHandler
level=ERROR
formatter=form05
args=(('localhost', handlers.SYSLOG_UDP_PORT), handlers.SysLogHandler.LOG_USER)

[handler_hand06]
class=handlers.NTEventLogHandler
level=CRITICAL
formatter=form06
args=('Python Application', '', 'Application')

[handler_hand07]
class=handlers.SMTPHandler
level=WARN
formatter=form07
args=('localhost', 'from@abc', ['user1@abc', 'user2@xyz'], 'Logger Subject')
kwargs={'timeout': 10.0}

[handler_hand08]
class=handlers.MemoryHandler
level=NOTSET
formatter=form08
target=
args=(10, ERROR)

[handler_hand09]
class=handlers.HTTPHandler
level=NOTSET
formatter=form09
args=('localhost:9022', '/log', 'GET')
kwargs={'secure': True}
python3 logging日志封装 日志脚本 import logging import colorlog import os import sys class LogAct(): def __init__(self, log_file_name, console_output="True"): self.log_file_name = log_file_name self.console_output = console_output self.log_color_co... 阅读详情

相关推荐

Python学习:日志配置的几种方式

本文介绍了Python中配置日志的几种常见方式。使用函数可以进行简单的日志配置,而使用配置文件或配置字典可以实现更灵活的配置。根据实际需求选择适合的方式进行日志配置,并根据需求进行相应的调整和扩展。希望这篇文章对你理解Python中配置日志的几种方式有所帮助!如果你有任何疑问,请随时提问。

BugHunterX的博客 513

python3--logging好用的日志模块

logging 日志记录

weixin_44517278的博客 1085

Unity集成阿里云语音AI:从麦克风录音到实时语音合成的全流程实现

本文详细介绍了在Unity中集成阿里云语音AI服务,实现从麦克风录音到实时语音合成的完整流程。通过调用阿里云的语音转文字和文字转语音接口,开发者可以快速为游戏或应用添加语音交互功能,提升用户体验。文章涵盖了环境配置、签名认证、音频处理及项目集成等核心步骤,并提供了实用的调试技巧。

weixin_29224589的博客 323

[基础]-Python3 日志入门(最全)

目录 1 为什么使用 logging 模块? 2 Logging 模块中有什么 2.1 记录器(Logger) 2.2 日志记录 2.3 处理器 2.4 格式器 2.5 过滤器 2.6 记录器层级 2.7 工作流小结 3 如何使用日志记录模块 3.1 过度格式化字符串 3.2 捕捉和格式化异常 3.3 设置记录器 3.4 基础设置 3.5 字典设置 4 拓展 log...

北慕的博客 2286

Vercel部署个人博客

先去注册一个账号,建议注册一个Github账号后,使用Github账号来登录Vercel。vercel 部署静态资源网站极其方便简单,并且有可观的访问速度,最主要的是免费部署。此时项目已经成功搭建完毕了,点击图片即可跳转到 vercel 所提供的二级域名访问。然后可以直接拉取我的仓库,所有已经配置好了,可以直接使用,建议fork成自己的!然后修改dns就行,注意vercel提供的域名可能访问不了,需要自己绑定!如果有自己的域名,还可以在 vercel 中进行设置。进入Vercel官网。

醉里博客202271.xyz 2357

若依Vue整合积木报表实战:Token安全校验全流程解析

本文详细解析了在若依Vue后台系统中安全集成积木报表的全流程,重点阐述了Token安全校验的核心机制。通过前端菜单配置、Token传递、后端权限拦截及自定义Token服务实现,构建了一套完整的企业级报表访问安全防线,确保核心业务数据的安全可控。

t8u9v0的博客 577

Python 日志模块logging

Python 日志模块logging

岳来的博客 3441

高数 | 【极限与等价无穷小】两个重要极限 & 经典错误 & 什么情况下求极限可以直接带入

一. 第一个重要极限 二. 第二个重要极限 三. 导数定义式 全文见【高等数学】两个重要的极限 - 知乎

"You are worthy! You can do it!" 6万+

python3学习-logging模块

1.logging模块的使用非常简单,引入模块就可以使用。import logginglogging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message')屏幕上打印: WARNING:root:This is warning mess

rickiyang的博客 3649

20、啁啾脉冲光纤放大器:原理、设计与仿真

本文详细介绍了啁啾脉冲光纤放大器(FCPA)的原理、设计与仿真过程。内容涵盖CPA技术的基本原理、光纤基CPA系统的组成、Tm掺杂光纤放大器的工作机制、全光纤脉冲展宽器的设计以及仿真分析。通过MATLAB仿真展示了脉冲在光纤中的展宽与放大过程,并讨论了如何优化系统以减少非线性失真、控制峰值功率并提高整体性能。文章还总结了系统优化的关键策略,并展望了未来的发展方向。

v4w5x6的博客 318

Dify 第 14 篇 Dify 知识库改造案例,如何返回完整文档?

在使用Dify社区版v1.7.1的知识库功能时,遇到检索仅返回匹配的文本片段而非完整文档的问题。针对运维案例知识库的需求,尝试了三种解决方案: 调整Chunk大小:通过设置最大分段长度为4000字符,但无法满足超过该长度的文档需求。 增加返回Chunk数量:通过调整Top K参数,但最大仅支持10个片段,且可能包含无关内容。 调用知识库API:通过检索接口获取匹配文档ID,再查询该文档所有分段内容,从而获得完整信息。具体步骤包括生成API密钥、获取知识库ID,并通过HTTP请求实现。 最终推荐采用AP

甘蓝的专栏 1968

python日志

python日志文件相关操作

my19880888的博客 6731

手把手教你学Simulink——AC-DC整流器场景:基于传统晶闸管控制整流拓扑的建模:带反电动势负载的单相可控整流器输出特性仿真

在工业电力电子应用中,单相可控整流器常用于将交流电源转换为可调直流电压。当该整流器连接到具有**反电动势(Back EMF)**的负载时(如直流电机、电池充电系统等),其输出特性和工作原理与纯电阻性负载有所不同。本文将带你使用搭建一个带反电动势负载的单相全控桥式整流器模型,并通过仿真分析其输出电压、电流波形以及触发角对输出特性的影响。本文详细介绍了如何使用Simulink搭建一个带反电动势负载的单相全控桥式晶闸管整流器模型,并进行了输出特性的仿真分析。

MHD0815的博客 231

Python logging模块不显示日志?3分钟搞定INFO级别日志输出配置

本文详细解析Python logging模块的配置与使用,从基础调试到高级场景全覆盖。针对常见的INFO级别日志不显示问题,提供快速解决方案和最佳实践,帮助开发者高效管理日志输出,提升调试效率。

weixin_28224217的博客 362

KingSCADA实现按钮点击效果

哈喽,你好啊,我是雷工!在做SCADA项目的时候,按钮是不可缺少的功能,但软件自带的按钮太丑,已经无法满足现如今客户对界面美观度的要求。这时候就需要UI小姐姐设计美观大气的SCADA界面,但UI设计的按钮切图放到程序中只是图片素材,当添加了按钮功能时,虽然能实现按钮功能,但没有任何点击效果;当遇到有需要连锁条件才能点击的按钮时,操作员无法区分是有连锁点击了没反应,还是系统界面卡死了导致的没点击成功,这时候有点击效果就能很好的区分这种问题。本篇介绍一种实现按钮点击效果的方法,以下为操作过程。

做有价值的事,积累有价值的笔记! 2765

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

揭秘Python日志格式化输出:99%开发者忽略的3个关键配置细节

掌握Python日志格式化输出的关键配置,解决日志混乱、定位困难问题。详解日志级别、格式模板与处理器设置,适用于Web开发与自动化场景,提升调试效率。3个易忽略细节深度解析,值得收藏。

FuncWander的博客 1059

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Python日志级别配置难题:3步构建清晰、可维护的多环境输出体系

解决Python日志分级输出难题,3步实现多环境日志管理。适用于开发、测试与生产环境,通过级别配置、处理器分离和格式化输出,构建清晰可维护的日志体系。结构化配置方案值得收藏。

SimSolve的博客 966

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Python3 日志模块

Python3 日志模块 python3 日志模块官网说明python中日志等级从高到低依次为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET 默认的日志等级为:WARNING,即在显示日志时,低于WARNING的日志不显示示例代码: #!/usr/bin/python3 import logging loggin...

weixin_34355559的博客 835

Python3 使用 logging.basicConfig() 配置输出日志中的中文乱码解决办法

在源码中修改encoding='utf-8',因为 logging.basicConfig() 配置时实际上是用到了4大组件,只不过给了默认值而已,, 在loging.FileHandler()方法中默认是這样的: 所以只要在源码中修改就是了...

weixin_42468724的博客 1万+

python logging 日志模块封装 from HwTTK

作为 HwTTK(Test Tool Kit )中的一员,HwLogging具有以下特性: 基于Python的日志模块封装 说明 logging模块是Python的标准库 logging根据日志级别记录日志 HwLogging支持自定义日志等级输出,控制台、文件可分别配置 HwLogging支持自定义输出位置,控制台、文件或都有 HwLogging支持自定义输出文件目录 HwLogging支...

Johnny's Lab 359

python-logging模块

python3-logging模块使用 1.默认情况 logging模块将日志打印到屏幕上(stdout),日志级别为WARNING(即只有日志级别高于WARNING的日志信息才会输出) py: #coding:utf-8 import logging logging.debug(12446) logging.info(12446) logging.warning(12446) logging.error(12446) logging.critical(12446) 运行结果: WARNING:

zyf13187056417的博客 251

python3 log_Python3 日志模块

Python3 日志模块python3 日志模块官网说明python中日志等级从高到低依次为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET默认的日志等级为:WARNING,即在显示日志时,低于WARNING的日志不显示示例代码:#!/usr/bin/python3import logginglogging.inf...

weixin_39759107的博客 453

django python 3.6 utf8输出

1)、settings.py 中配置Logging:   LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters':{ 'verbose': { 'format':'[%(asctime)s] %(message)s' },...

ioniconline的博客 667

python3 logging 控制台显示不同格式log_Python logging日志模块 配置文件方式

在一些微服务或web服务中我们难免需要日志功能,用来记录一些用户的登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等;Python内置 非常强大的日志模块 ==> logging 今天给大家分享一下以配置文件形式进行配置log日志 ;Centos6.7Python3.6logging0.5.1.2logging模块有三个比较重要的功能组件:1、loggers 配置文件可定义一些输出...

weixin_39882317的博客 896

Python3日志模块logging

目录 1. logging模块 1.1 日志级别 1.2 logging.basicConfig()函数 1.3 实例 3. logging.getLogger()函数 1. logging模块 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点: 可以通过设置不同的日志等级...

weixin_43265596的博客 745
上一篇: Python 3 和 Django 常用安装包
下一篇: Python3 Xml 转为Dict(字典)
Webben
博客等级 码龄10年 19粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值