因此,我希望为我的discord机器人创建一个日志文件,它是用python构建的。
我有几个set命令,可以通过print命令输出控制台,我已经在打印输出中添加了日期和时间,以便在机器人运行时可以跟踪它,但是让它将打印输出保存到文件中容易吗?这样,我就可以创建一个日志文件来跟踪不同的日期以及调用了什么。
控制台输出:屏幕截图_1.png
我的代码中的打印命令示例:
异步解码硬币(Ctx):
author = ctx.message.author
choice = random.randint(1,2)
if choice == 1:
await bot.say("Heads")
print(currentTime() + " - Coin Requested by " + str(author) + " It Landed on Heads!")
elif choice == 2:
await bot.say("Tails")
print(currentTime() + " - Coin Requested by " + str(author) + " It Landed on Tails!")我试着在网上查看一些其他问题,但我对它们感到相当困惑,因为没有明确的解释来说明发生了什么,以及我如何配置它才能为我的代码工作。
发布于 2018-03-31 03:42:44
您可以使用logging模块来完成此任务。
在最简单的级别上,它将像这样设置:
logging.basicConfig(filename="logfilename.log", level=logging.INFO)有许多不同的级别可用于写入文件,例如:
logging.info('your text goes here')
logging.error('your text goes here')
logging.debug('your text goes here')您可以在要记录到文件的任何位置使用这些行。如果要将控制台打印全部替换为日志记录,只需将打印行替换为logging.info(.......)有关该主题的更多信息,如更多可配置选项(如时间戳),请查看文档:
发布于 2018-03-31 05:18:00
在python中记录日志是非常有效且易于使用的。您只需使用python内部日志记录模块定义一个用于日志记录的python模块。您可以根据需要定义任意多个记录器。您还可以将其配置为将输出打印到控制台以及写入文件。除此之外,您还可以定义一个旋转文件处理程序,该处理程序还将执行日志旋转,这有助于日志旋转的自动化。下面是在任何python模块中直接定义和调用记录器的代码片段。
import sys
import logging
from logging.config import dictConfig
logging_config = dict(
version=1,
formatters={
'verbose': {
'format': ("[%(asctime)s] %(levelname)s "
"[%(name)s:%(lineno)s] %(message)s"),
'datefmt': "%d/%b/%Y %H:%M:%S",
},
'simple': {
'format': '%(levelname)s %(message)s',
},
},
handlers={
'api-logger': {'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'verbose',
'level': logging.DEBUG,
'filename': 'logs/api.log',
'maxBytes': 52428800,
'backupCount': 7},
'batch-process-logger': {'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'verbose',
'level': logging.DEBUG,
'filename': 'logs/batch.log',
'maxBytes': 52428800,
'backupCount': 7},
'console': {
'class': 'logging.StreamHandler',
'level': 'DEBUG',
'formatter': 'simple',
'stream': sys.stdout,
},
},
loggers={
'api_logger': {
'handlers': ['api-logger', 'console'],
'level': logging.DEBUG
},
'batch_process_logger': {
'handlers': ['batch-process-logger', 'console'],
'level': logging.DEBUG
}
}
)
dictConfig(logging_config)
api_logger = logging.getLogger('api_logger')
batch_process_logger = logging.getLogger('batch_process_logger')一旦你定义了这个文件(比如logger_settings.py),您可以将其导入到任何位置并使用。
from logger_settings import api_logger
api_logger.info('hello world')希望这能有所帮助。谢谢
发布于 2019-03-28 14:39:01
要创建日志文件,我们可以使用python中的logging包。创建日志文件的代码-
import logging
LOG_FILENAME = "logfile.log"
for handler in logging.root.handlers[:]:
logging.root.removeHandler(handler)
logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG)
logging.info('Forecasting Job Started...')
logging.debug('abc method started...')如果您想创建日志文件时间戳,我们可以使用datetime包来完成。创建带有时间戳的日志文件的代码-
from datetime import datetime
LOG_FILENAME = datetime.now().strftime('D:/log/logfile_%H_%M_%S_%d_%m_%Y.log')https://stackoverflow.com/questions/49580313
复制相似问题