【发布时间】:2022-12-21 00:34:26
【问题描述】:
我为我的模块编写了一个函数,用于记录所有模块。 logger.py 脚本:
def create_logger(path,file_name):
if logger is None:
logger = logging.getLogger()
logger.setLevel(logging.INFO)
formatter = logging.Formatter(
fmt="%(asctime)s %(levelname)s %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
if not self.logger.hasHandlers():
streamHandler = logging.StreamHandler()
streamHandler.setFormatter(formatter)
logger.addHandler(streamHandler)
if path is not None or file_name is not None:
fileHandler = logging.FileHandler(
(f"{self.path}/{self.file_name}.log"), "w"
)
fileHandler.setFormatter(formatter)
logger.addHandler(fileHandler)
我没有通过这个函数返回任何东西,因为它导致了一些模块特定的问题。(当我返回记录器时,一切都按照我的要求工作)。现在,因为我不返回记录器,所以我在使用 Filehandler 时遇到了一些问题。 我在整个模块中使用这种方法。例如: 一个.py
import logging
import create_logger
create_logger("logs","output")
logger=logging.getLogger(__name__)
def sum(a,b)
c=a+b
logger.info("All good!")
return c
上面的代码按预期工作,但未生成输出文件。 我想将上述配置用于涉及多个记录器语句的其他脚本。例如: b.py
import logging
import create_logger
create_logger("logs","output")
logger=logging.getLogger(__name__)
sum(2,3)
logger.info("This is logging to same outfile file as well")
当上面的脚本运行时,我的输出日志文件应该有两个 logger.info 语句。 除了输出文件之外的所有内容都在生成。记录器按照指定格式将输出打印到 STDOUT,但文件不存在。你认为我哪里做错了?谢谢!
【问题讨论】:
-
在函数范围之外创建记录器函数。
标签: python logging io filehandler