- logging模块可以通过多次调用logging.getLogger('log_name')返回同一个logger实例,使得在多个模块情况下使用相同的logger
- 典型的多模块场景下使用logging的方式是在main模块中配置logging,这个配置会作用于多个子模块,然后在其他模块中直接通过getLogger获取Logger对象即可。
import logging
import logging.config
logging.config.fileConfig("logging.conf") # 采用配置文件方式
logger = logging.getLogger("personal_log")
logger.debug("hello, world")
logger.info("hello, world")
logger.warn("hello, world")
logger.error("hello, world")
logger.critical("hello, world")
# 打印变量方法
# 方法一:
logger.info("variable=%d", variable)
# 方法二:
logger.info("variable={}".format(variable))
# 方法三:
logger.info(f"variable={variable}")
- logging模块配置文件
[loggers]
keys=root, DemoFaceId
[handlers]
keys=consoleHandler,fileHandler
[formatters]
keys=fmt
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_DemoFaceId]
level=DEBUG
qualname=DemoFaceId
handlers=fileHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=fmt
args=(sys.stdout,)
[handler_fileHandler]
class=logging.handlers.RotatingFileHandler
level=DEBUG
formatter=fmt
args=('log/demo_face_id.log', 'a', 20000, 5,)
[formatter_fmt]
format=[%(name)s: %(asctime)s] %(filename)s:%(lineno)d-%(levelname)s: [%(funcName)s] %(message)s
datefmt=