gwy*_*n93 3 python logging file-handling file-writing python-2.7
我正在尝试使用Pythonlogging库。我不想在控制台中打印消息,而是想将它们写入文件。根据文档,我有点不确定如何执行此操作。首先我导入了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')
Run Code Online (Sandbox Code Playgroud)
因此,假设我想从logFile我的logger.
logger.debug("Test")
Run Code Online (Sandbox Code Playgroud)
即使我使用了logFile.close(). 如果我尝试这个:
logFile.write(str(logger.debug("Test")))
Run Code Online (Sandbox Code Playgroud)
它基本上在文件中写入“无” .txt。必须有一个简单的方法来做到这一点;我究竟做错了什么?
这是我经常用于 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")
Run Code Online (Sandbox Code Playgroud)
您最终应该得到一个带有日期时间戳的日志文件