logger
自定义保存路径、保存文件个数
import logging from logging.handlers import TimedRotatingFileHandler from pathlib import Path import os dir_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) # =============== config =============== LOGGER_NAME = 'surf_draw' CONSOLE_LEVEL = logging.INFO LOG_PATH = Path(os.path.join(dir_path, 'logs')) # ====================================== INFO_PATH = LOG_PATH / Path('info') WARNING_PATH = LOG_PATH / Path('warning') ERROR_PATH = LOG_PATH / Path('error') INFO_PATH.mkdir(parents=True, exist_ok=True) WARNING_PATH.mkdir(parents=True, exist_ok=True) ERROR_PATH.mkdir(parents=True, exist_ok=True) # create logger logger = logging.getLogger(LOGGER_NAME) logger.setLevel(logging.INFO) # create console handler and set level to info stream_handler = logging.StreamHandler() stream_handler.setLevel(CONSOLE_LEVEL) # create file handler and set level to info file_name = LOG_PATH.joinpath('info/info.log') info_handler = TimedRotatingFileHandler(filename=file_name, when='midnight', backupCount=10) info_handler.setLevel(logging.INFO) # create file handler and set level to warning file_name = LOG_PATH.joinpath('warning/warning.log') warning_handler = TimedRotatingFileHandler(filename=file_name, when='midnight', backupCount=10) warning_handler.setLevel(logging.WARNING) # create file handler and set level to error file_name = LOG_PATH.joinpath('error/error.log') error_handler = TimedRotatingFileHandler(filename=file_name, when='midnight', backupCount=10) error_handler.setLevel(logging.ERROR) # create formatter stream_formatter = logging.Formatter('[{asctime}][{levelname}] {message}', style='{', datefmt='%Y-%m-%d %H:%M') file_formatter = logging.Formatter('[{asctime}][{levelname}][{filename} line{lineno}] {message}', style='{', datefmt='%Y-%m-%d %H:%M:%S') # add formatter to ch stream_handler.setFormatter(stream_formatter) info_handler.setFormatter(file_formatter) warning_handler.setFormatter(file_formatter) error_handler.setFormatter(file_formatter) # add ch to logger logger.addHandler(stream_handler) logger.addHandler(info_handler) logger.addHandler(warning_handler) logger.addHandler(error_handler) logger.debug('Log module loaded successfully.')
只打印 info 信息,不保存文件
import logging # create logger logger = logging.getLogger('RunWayWind') logger.setLevel(logging.INFO) # create console handler and set level to debug ch = logging.StreamHandler() ch.setLevel(logging.INFO) # create formatter formatter = logging.Formatter( '[{asctime}][{levelname:^5}][ {filename:^20} line{lineno:>5}] {message}', style='{', datefmt='%Y/%m/%m %H:%M:%S') # add formatter to ch ch.setFormatter(formatter) # add ch to logger logger.addHandler(ch) logger.info('Log module loaded successfully.')