如何将日志记录消息写入文件

How to write logging messages to a file

提问人:gwydion93 提问时间:8/29/2019 最后编辑:gwydion93 更新时间:8/30/2019 访问量:2996

问:

我正在尝试使用Python库。我不想在控制台中打印消息,而是将它们写入文件。根据文档,我有点不确定如何做到这一点。首先,我导入了 in,然后创建了我的日志记录对象。注意:执行此操作时,我有点不确定参数。这是否应该是具有完整文件路径的文件名?我只是编造的随机名称?loggingloggingname

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')  

所以,假设我想从我的 .logFilelogger

   logger.debug("Test")

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

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

它基本上在文件中写“无”。必须有一种简单的方法可以做到这一点;我做错了什么?.txt

蟒蛇-2.7 伐木 文件处理 文件写入

评论

1赞 hoefling 8/30/2019
使用而不是自行处理文件。 将写入日志文件,除此之外无需执行任何操作。顺便说一句,方法不会返回,这就是您在文件中看到的原因。fileName=logFileNamelogger.debug("Test")logger.{debug,info,warning,error}None

答:

7赞 Calculus 8/30/2019 #1

以下是一些我经常用于 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")

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