2017-08-03 63 views
1

我是新来的日志和蟒蛇,并找到了一个名为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) 
+1

任何你没有使用标准Python ['logging'](https://docs.python.org/3/library/logging.html)库的理由? –

+0

不是真的如果你可以提供任何最小的解决方案,像上面的im打开它 –

+0

这是一个写入文件的快速示例。 https://docs.python.org/2/howto/logging.html#logging-to-a-file –

回答

0

问题是您没有提供默认日志记录目录,因此当您不向initialize_logger()传递任何内容时,行log_handler = FileHandler(path)将会失败。简单地和其他添加到if path is None语句设置path一些位置:)


更妙的是,简单地改变path=Nonepath='/path/to/default.log'什么的。