首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建日志文件

创建日志文件
EN

Stack Overflow用户
提问于 2018-03-31 03:31:31
回答 4查看 65K关注 0票数 17

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

我有几个set命令,可以通过print命令输出控制台,我已经在打印输出中添加了日期和时间,以便在机器人运行时可以跟踪它,但是让它将打印输出保存到文件中容易吗?这样,我就可以创建一个日志文件来跟踪不同的日期以及调用了什么。

控制台输出:屏幕截图_1.png

我的代码中的打印命令示例:

异步解码硬币(Ctx):

代码语言:javascript
复制
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!")

我试着在网上查看一些其他问题,但我对它们感到相当困惑,因为没有明确的解释来说明发生了什么,以及我如何配置它才能为我的代码工作。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-31 03:42:44

您可以使用logging模块来完成此任务。

在最简单的级别上,它将像这样设置:

代码语言:javascript
复制
logging.basicConfig(filename="logfilename.log", level=logging.INFO)

有许多不同的级别可用于写入文件,例如:

代码语言:javascript
复制
logging.info('your text goes here')
logging.error('your text goes here')
logging.debug('your text goes here')

您可以在要记录到文件的任何位置使用这些行。如果要将控制台打印全部替换为日志记录,只需将打印行替换为logging.info(.......)有关该主题的更多信息,如更多可配置选项(如时间戳),请查看文档:

https://docs.python.org/2/library/logging.html

票数 25
EN

Stack Overflow用户

发布于 2018-03-31 05:18:00

在python中记录日志是非常有效且易于使用的。您只需使用python内部日志记录模块定义一个用于日志记录的python模块。您可以根据需要定义任意多个记录器。您还可以将其配置为将输出打印到控制台以及写入文件。除此之外,您还可以定义一个旋转文件处理程序,该处理程序还将执行日志旋转,这有助于日志旋转的自动化。下面是在任何python模块中直接定义和调用记录器的代码片段。

代码语言:javascript
复制
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),您可以将其导入到任何位置并使用。

代码语言:javascript
复制
from logger_settings import api_logger

api_logger.info('hello world')

希望这能有所帮助。谢谢

票数 5
EN

Stack Overflow用户

发布于 2019-03-28 14:39:01

要创建日志文件,我们可以使用python中的logging包。创建日志文件的代码-

代码语言:javascript
复制
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包来完成。创建带有时间戳的日志文件的代码-

代码语言:javascript
复制
from datetime import datetime
LOG_FILENAME = datetime.now().strftime('D:/log/logfile_%H_%M_%S_%d_%m_%Y.log')
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49580313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档