Python 如何使用RotatingFileHandler设置日志记录?

Python 如何使用RotatingFileHandler设置日志记录?,python,Python,我有一个分析例程(python 2.7),我正在添加日志记录。我的目标是在每个函数的开头和结尾添加信息消息,这样我就可以看到每个函数需要多长时间。下面是一个简化的版本。当我运行这个示例时,没有任何内容写入我指定的日志文件。我想把带有时间戳的信息写入该文件 import numpy as np import pandas as pd import logging import logging.handlers def perform_process(): setup_logging()

我有一个分析例程(python 2.7),我正在添加日志记录。我的目标是在每个函数的开头和结尾添加信息消息,这样我就可以看到每个函数需要多长时间。下面是一个简化的版本。当我运行这个示例时,没有任何内容写入我指定的日志文件。我想把带有时间戳的信息写入该文件

import numpy as np
import pandas as pd
import logging
import logging.handlers

def perform_process():
    setup_logging()
    baseline()
    calculations()

def setup_logging():
    logging.basicConfig(level = logging.INFO)
    global logger
    global handler
    global formatter
    logger = logging.getLogger(__name__)
    handler = logging.handlers.RotatingFileHandler('C:\\Users\\perform_log.log', maxBytes=2000, backupCount=5)
    handler.setLevel(logging.info)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    logger.info('I am logging')

def baseline():
    logger.info('start baseline function')
    baseline_df = pd.DataFrame(np.random.randn(10,4), columns=['a','b','c','d'])
    global output_df
    output_df = baseline_df

def calculations():
    print output_df.head()

perform_process()
运行此文件时,我在控制台中获得以下输出:

          a         b         c         d
0 -0.686909  0.279976  0.219521 -0.027359
1 -0.718949  0.714682  1.202500  0.935868
2  0.454883  1.205500  0.079626 -1.370491
3 -0.743507 -1.353939  0.677011 -0.847376
4 -0.464742  1.034433 -0.779324  0.930626

[5 rows x 4 columns]
INFO:__main__:I am logging
INFO:__main__:start baseline function
但是,我指定的日志文件中没有显示任何数据。我的日志记录设置有什么问题,无法使用我指定的日志文件格式写入消息

关于上面的输出,为什么在两个日志调用之前执行“print output_df.head()”?我想按执行顺序查看日志消息。

在这一行中

handler.setLevel(logging.info)

logging.info
返回的函数不是级别。您必须将其更正为
logging.INFO
(信息大写)

这对我来说似乎很好。仅使用setup_日志执行脚本并调用它。那么日志文件中有日志项了吗?不只是在控制台里?是的,两者都有