日志
一、日志的作用:
记录在系统上面进行的操作 记录系统运行状态 出现问题也能很快定位问题
二、日志组件:
1、loggers:日志器
2、handler:处理器
3、formatter:格式器
方法一:封装
1 import logging 2 3 def test_log(): 4 # 创建一个日志器 别的文件使用日志 就用到这个日志器 5 logger=logging.getLogger() 6 # 设置日志级别 日志信息输出info以上的级别信息 7 logger.setLevel(logging.INFO) 8 # 创建一个格式器 9 fmt='%(asctime)s %(filename)s %(levelname)s %(funcName)s %(message)s' 10 formater=logging.Formatter(fmt) 11 # 处理器 Handler 要把日志信息输出到哪 12 # 创建一个输出到控制台的处理器 13 sh=logging.StreamHandler() 14 # 把设置的日志信息放到控制台中 15 logger.addHandler(sh) 16 # 控制台设置格式器 17 sh.setFormatter(formater) 18 19 # 在文件里面生成日志信息 创建处理器 文件处理器 处理器的作用:把日志信息输出到指定的位置 20 # 文件处理器创建 日志信息存放在哪 21 fh=logging.FileHandler('log1.log',encoding='utf-8') 22 # 需要把日志信息放到文件处理器里面去 23 logger.addHandler(fh) 24 # 给fh设置格式 25 fh.setFormatter(formater) 26 return logger
方法二:自定义配置文件log.ini
[loggers] keys=root [handlers] keys=fileHandler,streamHandler [formatters] keys=simpleFormatter [logger_root] level=INFO handlers=fileHandler,streamHandler [handler_fileHandler] class=FileHandler level=INFO formatter=simpleFormatter args=('./mylog.log','a','utf-8') [handler_streamHandler] class=StreamHandler level=INFO formatter=simpleFormatter [formatter_simpleFormatter] format=%(asctime)s %(filename)s %(levelname)s %(funcName)s %(message)s
import logging from logging import config # 这里之所以不直接写入日志的文件的路径,是因为使用日志时候的相对路径的层级不同,会引发报错。 def get_log(path): """ 获取日志ini文件 :param path: 日志文件的相对路径 :return: 日志类 """ logging.config.fileConfig(path) return logging.getLogger()
log = get_log(os.path.join(CONFIG_DIR, 'log.ini'))
本文来自博客园,作者:术科术,转载请注明原文链接:https://www.cnblogs.com/shukeshu/p/15583083.html
分类:
Selenium
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现