# 通过配置Handlerdef get_logger():    logger = logging.getLogger(__name__)    formatter = logging.Formatter('%(asctime)s-%(lineno)d-%(module)s-%(message)s')    logger.setLevel(level=logging.INFO)    stream_handler = logging.StreamHandler()    stream_handler.setFormatter(formatter)    logger.addHandler(stream_handler)    # FileHandler    file_handler = logging.FileHandler('logs/serve.log')    file_handler.setLevel(level=logging.INFO)    file_handler.setFormatter(formatter)    logger.addHandler(file_handler)    # error    error_handler = logging.FileHandler('logs/error.log')    error_handler.setLevel(level=logging.ERROR)    error_handler.setFormatter(formatter)    logger.addHandler(error_handler)    return logger
- Logger:即 Logger Main Class,是我们进行日志记录时创建的对象,我们可以调用它的方法传入日志模板和信息,来生成一条条日志记录,称作 Log Record。
 - Log Record:就代指生成的一条条日志记录。
 - Handler:即用来处理日志记录的类,它可以将 Log Record 输出到我们指定的日志位置和存储形式等,如我们可以指定将日志通过 FTP 协议记录到远程的服务器上,Handler 就会帮我们完成这些事情。
 - Formatter:实际上生成的 Log Record 也是一个个对象,那么我们想要把它们保存成一条条我们想要的日志文本的话,就需要有一个格式化的过程,那么这个过程就由 Formatter 来完成,返回的就是日志字符串,然后传回给 Handler 来处理。
 - Filter:另外保存日志的时候我们可能不需要全部保存,我们可能只需要保存我们想要的部分就可以了,所以保存前还需要进行一下过滤,留下我们想要的日志,如只保存某个级别的日志,或只保存包含某个关键字的日志等,那么这个过滤过程就交给 Filter 来完成。
 - Parent Handler:Handler 之间可以存在分层关系,以使得不同 Handler 之间共享相同功能的代码。