根目录设置,日志记录

1.根目录

from pathlib import Path

# E:\projects\Experiment\NARRE
ROOT_DIR = Path(__file__).parent.parent

if __name__ == "__main__":
    print(ROOT_DIR)

2.日志记录模块

import logging

from NARRE.utils.path_helper import ROOT_DIR

FORMATTER = logging.Formatter('%(asctime)s [%(levelname)s] %(filename)s:%(lineno)d - %(message)s')


def get_logger(name: str):
    logger = logging.getLogger(name)

    #  if logger is newly created
    if not logger.handlers:
        logger.setLevel(logging.DEBUG)

        # create console handler
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)
        ch.setFormatter(FORMATTER)

        # add the handlers to the logger
        logger.addHandler(ch)

    return logger


def add_log_file(logger, path: str):
    '''
    这个函数用于将日志输出到文件中。首先按照指定路径创建一个文件处理器 fh。设置处理器的日志级别为 INFO,并使用 FORMATTER 格式化日志信息。
    将处理器添加到指定的 logger 对象中。之后,所有通过该 logger 对象输出的日志都会被发送到指定路径的文件中。
    '''
    # create file handler with INFO level
    fh = logging.FileHandler(ROOT_DIR.joinpath(path))
    fh.setLevel(logging.INFO)
    fh.setFormatter(FORMATTER)
    logger.addHandler(fh)


def remove_log_file(logger):
    logger.handlers = [h for h in logger.handlers if not isinstance(h, logging.FileHandler)]


logger = get_logger("NARRE")

if __name__ == "__main__":
    logger.info("Info message.")
    add_log_file(logger, "log/test.log")
    logger.debug("Debug message.")
    logger.warning("Warning message.")
    remove_log_file(logger)
    logger.critical("Critical message.")

 

posted @ 2023-07-19 22:16  shuqi123  阅读(21)  评论(0)    收藏  举报