记录到控制台和文件的日志记录器

时间:2019-11-21 01:23:15

标签: python python-3.x logging

我有一个用于python的Raspberry Pi的引导脚本。我希望创建一个记录到文件以及控制台的记录器。

我打算做这样的事情:

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s",
    handlers=[
        logging.FileHandler("{0}/{1}.log".format(logPath, fileName)),
        logging.StreamHandler()
    ])

但是我真正想要的是将INFO记录到StreamHandler并将DEBUG记录到FileHandler ...我似乎无法弄清楚。

有人可以帮我吗?

使用Python 3.7.5

1 个答案:

答案 0 :(得分:1)

您可以自己构建记录器(通过配置文件或纯Python)

我浪费了几个小时的棘手事情是忘记在记录器以及每个处理程序上设置日志级别。确保记录器与最宽松的处理程序一样宽松。

示例脚本

# emits the info line to the console and
# both the info & debug lines to the log file

# test_pylog.py
import logging

log_format = logging.Formatter(
  '%(asctime)s %(threadName)s %(levelname)s %(message)s'
)

logger = logging.getLogger(__name__)

console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(log_format)

logger.addHandler(console_handler)

file_handler = logging.FileHandler('logfile.txt')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(log_format)

logger.addHandler(file_handler)
logger.setLevel(logging.DEBUG)
if __name__ == '__main__':
  logger.debug('Panic! at the disco')
  logger.info('Weezer')