创建日志文件

新手上路,请多包涵

我想为我的 discord 机器人创建一个日志文件,它是用 python 构建的。

我有几组命令通过打印命令输出控制台,我在打印输出中添加了日期和时间,以便在机器人运行时对其进行跟踪。但是,是否也可以轻松地将打印输出保存到文件中?这样我就可以制作一个日志文件来跟踪不同的日子和要求的内容。

控制台输出: Screenshot_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!")

我曾尝试在线查看其他一些问题,但看到它们时我感到很困惑,因为没有明确解释发生了什么以及如何配置它以适用于我的代码。

原文由 antwilson1720 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 591
2 个回答

您可以使用 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(.......)

有关该主题的更多信息,例如更多可配置选项(例如时间戳),请查看文档 (python 3): https ://docs.python.org/3/library/logging.html

原文由 Harrison 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

希望这有帮助。谢谢

原文由 Tasneem Haider 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题