1. Log简介
| |
| ''' |
| 通过log的分析,可以方便用户了解系统或软件、应用的运行情况, |
| 如果你的应用Iog足够丰富,也可以分析以往用户的操作行为了类型喜好、地域分布或其他更多信息; |
| 如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。 |
| ''' |
2. Log用途
| |
| ''' |
| 问题追踪: 通过日志不仅仅包括我们程序的一些bug,也可以在安装配置时,通过日志可以发现问题。 |
| 状态监控:通过实时分析日志,可以监控系统的运行状态,做到早发现问题、早处理问题。 |
| 安全审计:审计主要体现在安全上,通过对日志进行分析,可以发现是否存在非授权的操作 |
| ''' |
3. Log等级
4. Log模块的四大组件
| |
| ''' |
| 提供应用程序代码直接使用的接口 |
| ''' |
| |
| |
| ''' |
| 用于将日志记录发送到指定的目的位置 |
| FileHandler: logging.FileHandler;日志输出到文件 |
| RotatingHandler: logging.handlers.RotatingHandler;日志回滚方式,支持日志文件最大数量和日志文件回滚 |
| SMTPHandler: logging.handlers.SMTPHandler;远程输出日志到邮件地址 |
| HTTPHandler: loggng.handlers.HTTPHandler;通过"GET”或者"POST“远程输出到HTTP服务器 |
| ... |
| ''' |
| |
| |
| ''' |
| 提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其它的日志记录将会被忽略) |
| ''' |
| |
| |
| ''' |
| 用于控制日志信息的最终输出格式 |
| %(levelno)s :打印日志级别的数值 |
| %(levelname)s :印日志级别的名称 |
| %(pathname)s :打印当前执行程序的路径,其实就是sys.argv[0] |
| %(filename)s :打印当前执行程序名 |
| %(funcName)s :打印日志的当前函数 |
| %(lineno)d :打印日志的当前行号 |
| %(asctime)s :打印日志的时间 |
| %(thread)d :打印线程ID |
| %(threadName)s :打印线程名称 |
| %(process)d :打印进程ID |
| %(message)s :打印日志信息 |
| ''' |
5. 示例
| import logging |
| logger = logging.getLogger(__name__) |
| logger.setLevel(level = logging.INFO) |
| handler = logging.FileHandler("log.txt") |
| formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') |
| handler.setFormatter(formatter) |
| logger.addHandler(handler) |
| |
| |
| logger.info("start print log") |
| logger.debug("Do something") |
| logger.warning("Something maybe fail.") |
| logger.info("Finish") |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫