如何将日志消息写入文件

How to write logging messages to a file

我正在尝试使用 Python logging 库。我不想在控制台中打印消息,而是想将它们写入文件。基于 documentation ,我有点不确定该怎么做。首先我导入了 logging 然后我创建了我的日志记录对象。注意:在执行此操作时,我对 name 参数有点不确定。这应该是一个具有完整文件路径的文件名吗?我随便起的名字?

foldname = "chk_logs"
logFileName = os.path.join(path.abspath(path.curdir),foldname + "\Fields_Log_" + timeStamp + ".txt")             #logging
if os.path.isdir(foldname)==False:
    os.mkdir(foldname)
logFile = open(logFileName, "w")

format="%(asctime)s [%(levelname)s] %(message)s"
logging.basicConfig(fileName=logFile, format=format, level=10)
logger = logging.getLogger('name')  

所以,假设我想从我的 loggerlogFile 写一条消息。

   logger.debug("Test")

即使在我使用 logFile.close() 之后,这基本上什么也没做。如果我试试这个:

logFile.write(str(logger.debug("Test")))

它基本上是在.txt文件中写入'None'。必须有一种简单的方法来做到这一点;我做错了什么?

这是我经常用于 Python 日志记录的一些样板代码。这是为了 Windows。如果您使用的是 UNIX,则需要将正斜杠更改为反斜杠

import os
import logging
import datetime as dt
import time

LOG_FILE = os.getcwd() + "/logs"
if not os.path.exists(LOG_FILE):
    os.makedirs(LOG_FILE)
LOG_FILE = LOG_FILE + "/" + dt.datetime.fromtimestamp(time.time()).strftime('%Y_%m_%d %H_%M_%S') + ".log"
logFormatter = logging.Formatter("%(levelname)s %(asctime)s %(processName)s %(message)s")
fileHandler = logging.FileHandler("{0}".format(LOG_FILE))
fileHandler.setFormatter(logFormatter)
rootLogger = logging.getLogger()
rootLogger.addHandler(fileHandler)
rootLogger.setLevel(logging.INFO)

logging.info("testing out the logging functionality")

您最终应该得到一个具有日期时间戳的日志文件