我是log和python的新手,并且找到了一个名为logbook
的库,我想使用它。我正在尝试使用intiliaze
日志文件的某种包装器,然后我可以从不同的文件中调用它。
但我一直低于错误。我做错了什么?
self.stream = io.open(self._filename, mode, encoding=self.encoding)
TypeError: expected str, bytes or os.PathLike object, not NoneType
logger.py
from logbook import Logger, StreamHandler
from logbook import FileHandler
import sys
import os
log = Logger()
initialized = False
def make_log_dir_if_missing(log_dir):
import cheetax.utils.system
cheetax.system.make_directory(log_dir)
def initialize_logger(path=None):
global initialized, log
if initialized:
return
if path is not None:
make_log_dir_if_missing(path)
log_path = os.path.join(path, 'logger.log')
log_handler = FileHandler(path)
log_handler.push_application()
initialized = True
GLOBAL_LOGGER = log
cli.py
def main():
initialize_logger()
其他文件
logger.info(welcome)
答案 0 :(得分:1)
问题是您没有提供默认的日志记录目录,因此当您向log_handler = FileHandler(path)
传递任何内容时,行initialize_logger()
将失败。只需将if path is None
语句添加到path
语句,将path=None
设置为某个位置:)
更好的是,只需将path='/path/to/default.log'
更改为{{1}}或其他内容。