python logging日志没有写入到指定文件,写到其他项目的日志文件
背景:
项目A为主框架项目,使用到了项目B的方法
项目A、B均有封装好的日志方法,且均在封装好的日志文件里面,增加了logger = MyLogger().info,其他文件要使用日志时,引入logger进行调用
封装的日志文件,在创建一个新的handler时,先将所有的移除(防止重复),(也是因为移除掉了,导致没有写到指定的日志文件)
日志文件后实例化日志对象
其他模块要使用日志方法时,不再重新实例化logger对象,引入已经实例化好的r_logger对象,即可logger.info()使用
两个项目日志封装和logger对象实例化和使用都是一样
问题:
执行项目A的运行功能,控制台日志正常输出,但指定的日志文件没有写入日志,反而,将日志写到了项目B的log文件
如下图:
项目A的日志文件,在13:20~14:34均有执行项目A的运行功能,但是没有具体的执行日志,(test日志为在初始化logger时)
将项目A指定日志,写到了项目B的日志文件了,可以对应执行的时间
分析
在封装的日志文件,debugger,加上断点,包括项目B的日志文件初始化时,也要加上断点
1、 启动项目A,在日志文件加了断点,启动时,会进到日志文件,创建一个控制台和文件的handler
python 执行顺序,会进入到文件的import部分,检查是否存在;因为项目A使用了项目B的方法,此方法文件有引用项目B的日志文件,所以也会初始化项目B的日志文件,初始化时获取到当前所有的handler,包括项目A初始化时创建的控制台和文件的handler,就会导致项目B日志文件将项目A的文件handler也移除掉了,所以将项目A的执行日志,写到了项目B的日志文件了
代码修改:
1、之前代码,日志封装文件后,直接r_logger = MyLogPrint().logger,其他文件直接引入r_logger,就可以使用info等方法;这样就会导致只实例化一次logger,项目B执行其下的日志文件,会将项目A的移除掉
更新:
在项目A,需要使用日志的文件,重新实例化日志对象,
重新实例化过程,就会重新创建项目A的日志文件的handler,就会将日志写回到项目A
python logging日志没有写入到指定文件,写到其他项目的日志文件的更多相关文章
- java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- python logging模块使用流程
#!/usr/local/bin/python # -*- coding:utf-8 -*- import logging logging.debug('debug message') logging ...
- python logging模块使用教程
简单使用 #!/usr/local/bin/python # -*- coding:utf-8 -*- import logging logging.debug('debug message') lo ...
- 第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目
第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目 scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:h ...
- 五十一 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目
scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:https://github.com/scrapy/scrapyd 建议安装 pip3 install s ...
- Python + logging 输出到屏幕,将log日志写入文件
日志 日志是跟踪软件运行时所发生的事件的一种方法.软件开发者在代码中调用日志函数,表明发生了特定的事件.事件由描述性消息描述,该描述性消息可以可选地包含可变数据(即,对于事件的每次出现都潜在地不同的数 ...
- Python + logging输出到屏幕,将log日志写入到文件
logging提供了一组便利的函数,用来做简单的日志.它们是 debug(). info(). warning(). error() 和 critical(). logging函数根据它们用来跟踪的事 ...
- python logging 日志轮转文件不删除问题
前言 最近在维护项目的python项目代码,项目使用了 python 的日志模块 logging, 设定了保存的日志数目, 不过没有生效,还要通过contab定时清理数据. 分析 项目使用了 logg ...
- python logging 日志轮转文件不删除问题的解决方法
项目使用了 logging 的 TimedRotatingFileHandler : #!/user/bin/env python # -*- coding: utf-8 -*- import log ...
- 将不同级别的logging 日志信息写入不同文件
将不同级别的logging 日志信息写入不同文件 # -*- coding: utf-8 -*- import os import time from logging.handlers import ...
随机推荐
- [FAQ] Vue iframe 的 src 是链接地址却加载了相对路径 ?
iframe 的 src 是链接, 但是加载的实际链接是相对路径,只有一种可能:链接地址不正确. 检查链接有没有少符号,常见错误:http//,http:/ Refer:Vue的iframe错误 Li ...
- DE10-Lite锁相环使用教程
DE10-Lite锁相环使用教程 目标:本文讲述如何在Quartus里设置和例化一个锁相环. 引言 锁相环(PLL)是一种闭环频率控制电路,用于比较压控振荡器的输入信号和输出信号之间的相位差. 负反馈 ...
- 015_元器件BOM表的输出与打印
015_元器件BOM表的输出与打印 BOM表,选中dsn/tools/Bill of materials/Header后添加封装参数\tPCB Footprint,Combined property ...
- Servlet注解的使用,简化配置 以及,使用模板方法设计模式优化oa项目
Servlet注解的使用,简化配置 以及,使用模板方法设计模式优化oa项目 每博一文案 有句谚语说:"一怒之下踢石头,只有痛着脚趾头." 比一件糟糕的事情更可拍的,是你用糟糕的态度 ...
- CPU是什么?
在程序是怎样跑起来的这本书中我们首先被询问的一个问题是"程序是什么?它是有什么组成的?而CPU又与程序有什么关系呢?",若我们能知道前两个,其实更容易将你带入讨论"CPU ...
- Unity 热更--AssetBundle学习笔记 1.0【AB包资源加载工具类的实现】
工具类封装 通过上文中对AB包加载API的了解和简单使用,对AB包资源加载的几种方法进行封装,将其写入单例类中,如代码展示. 确保每个AB资源包只加载一次: 在LoadAssetBundleManag ...
- 三、Prophecis 一站式云原生机器学习平台
Prophecis 是微众银行自研大数据平台套件 WeDataSphere 的核心应用工具之一,为用户提供了全栈的机器学习应用开发与部署解决方案.作为WeDataSphere 功能工具应用系统,Pro ...
- tomcat(1)- tomcat服务介绍与安装
目录 1. Tomcat介绍 2. Tomcat安装 2.1 JDK安装 2.2 Tomcat安装 3. Tomcat打开默认的管理页面 1. Tomcat介绍 JVM简介 JAVA应用都是运行在ja ...
- Splashtop Enterprise提供全面的远程访问和远程支持解决方案
全球领先的远程访问和远程支持解决方案领导者 Splashtop Inc. 发布了全新的 Splashtop Enterprise ,这是一个全面的远程访问和远程支持解决方案,满足企业的IT人员,服 ...
- AIRIOT物联网低代码平台如何配置OPC UA驱动?
AIRIOT物联网低代码平台支持驱动类型丰富,驱动包括但不限于通用驱动信息,无线驱动信息,行业驱动信息及各个厂商驱动.驱动稳定性强,经受住各个大型项目考验,持续稳定运行. AIRIOT物联网低代码平台 ...