web-dev-qa-db-fra.com

Créer un fichier journal

Je cherche donc à créer un fichier journal pour mon bot de discordance qui est construit avec python.

J'ai quelques commandes définies qui sortent la console via la commande d'impression, j'ai ajouté une date et une heure aux sorties d'impression afin qu'elles puissent être suivies lorsque le bot est en cours d'exécution, mais est-il facile de lui faire enregistrer les impressions sur un fichier aussi? De cette façon, je peux créer un fichier journal pour suivre les différents jours et ce qui était demandé.

Sortie console: Screenshot_1.png

Exemple d'une commande d'impression dans mon code:

pièce async def (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!")

J'ai essayé de regarder en ligne d'autres questions, mais je suis assez confus en les regardant car il n'y a pas d'explication claire sur ce qui se passe et comment je peux le configurer pour qu'il fonctionne pour mon code.

5
Kynakuu

Vous pouvez utiliser le module logging pour cela.

Au niveau le plus simple, il sera configuré comme ceci:

logging.basicConfig(filename="logfilename.log", level=logging.INFO)

Il existe un certain nombre de niveaux différents que vous pouvez utiliser pour écrire dans le fichier, tels que:

logging.info('your text goes here')
logging.error('your text goes here')
logging.debug('your text goes here')

Vous pouvez utiliser ces lignes partout où vous souhaitez vous connecter au fichier. Si vous souhaitez remplacer l'impression de la console par la journalisation, remplacez simplement les lignes d'impression par logging.info(.......)

Pour plus d'informations sur le sujet, telles que des options plus configurables (telles que des horodatages), consultez les documents: https://docs.python.org/2/library/logging.html

9
Harrison

Pour créer le fichier journal, nous pouvons utiliser le package de journalisation en python. Code pour créer le fichier journal -

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('Forecastiong Job Started...')
logging.debug('abc method started...')

Et si vous souhaitez créer l'horodatage du fichier journal, nous pouvons le faire en utilisant le package datetime. code pour créer un fichier journal avec horodatage -

from datetime import datetime
LOG_FILENAME = datetime.now().strftime('D:/log/logfile_%H_%M_%S_%d_%m_%Y.log')
3
Brijesh Rana

La connexion python est très efficace et facile à utiliser. Il vous suffit de définir un module python pour la connexion à l'aide de python module de journalisation interne. Vous pouvez définir autant d'enregistreurs que vous le souhaitez. Vous pouvez également le configurer pour imprimer la sortie sur une console ainsi qu'écrire dans un fichier. En dehors de cela, vous pouvez définir un gestionnaire de fichiers rotatif qui effectuera une rotation de journal comme bien qui aide à l'automatisation de la rotation des journaux. Ci-dessous l'extrait pour définir directement et appeler l'enregistreur dans n'importe quel module 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')

une fois que vous avez défini ce fichier (par exemple logger_settings.py), vous pouvez l'importer n'importe où et l'utiliser.

from logger_settings import api_logger

api_logger.info('hello world')

J'espère que cette aide. Merci

0
Tasneem Haider