C'est l'histoire de l'utilisation de logrotate avec la journalisation en python.
En python2 (cela ne peut pas être aidé), j'ai spécifié hands dans logging.basicConfig et utilisé TimedRotatingFileHandler, mais pour une raison quelconque, il n'a même pas été écrit dans le fichier journal spécifié, et bien sûr, la rotation des journaux n'a pas été effectuée non plus. Mais quand je l'exécute en python3, cela fonctionne.
Je pensais que je n'étais pas sûr, alors je l'ai résolu d'une manière différente, alors je vais l'écrire.
Quelqu'un a dit que cela ne fonctionnait pas avec certaines versions de python2, Le spécifiez-vous en premier lieu? J'apprécierais que vous me donniez quelques informations.
** Je l'ai écrit dans le post-scriptum, mais j'ai obtenu des informations de l'intérieur de l'entreprise et j'ai compris pourquoi cela ne fonctionnait pas! Je vous remercie. .. ** **
En conclusion, mordre TimedRotatingFileHandler dans addHandler () a bien fonctionné.
import logging
from logging.handlers import TimedRotatingFileHandler
logger = logging.getLogger(__name__)
formatter = "%(asctime)s:%(name)s:%(levelname)s:%(message)s"
handler = TimedRotatingFileHandler(
"/hogehoge/logger.log",
when="M",
backupCount=1
)
logger.setLevel(logging.INFO)
handler.setFormatter(logging.Formatter(formatter))
logger.addHandler(handler)
logger.info("===== START HOGEHOGE =====")
Les sources qui n'ont pas fonctionné sont:
import logging
import logging.handlers
logger = logging.getLogger(__name__)
formatter = '%(asctime)s:%(name)s:%(levelname)s:%(message)s'
logging.basicConfig(
level=logging.DEBUG,
format=formatter,
handlers=[logging.handlers.TimedRotatingFileHandler(
filename ='/hogehoge/logger.log',
when="M",
backupCount=1
)]
)
logger.setLevel(logging.INFO)
logger.info("=== START HOGEHOGE ===")
La cause était inconnue, mais si la méthode ci-dessus ne fonctionnait pas pour le moment, Je pense nourrir addHandler.
En fonction de l'environnement, j'ai pensé à faire TimedRotatingFileHandler avec python2, J'ai défini des gestionnaires dans basicConfig et cela n'a pas fonctionné, La raison n’était apparemment pas simplement étayée. .. ..
Vous pouvez certainement voir qu'il n'y a pas de gestionnaire dans le contenu suivant et qu'il ne peut pas être utilisé avec basicConfig. Il m'a fallu beaucoup de temps pour lire plus de documents. J'ai beaucoup appris.
##Contenu
Les arguments de mot-clé suivants sont pris en charge.
・ FileMaker
Un FileHandler est créé avec le nom spécifié au lieu de StreamHandler.
・ Mode fil
If filename is specified, open the file in this mode. Defaults to 'a'.
・ Format
Utilise la chaîne formatée spécifiée dans le gestionnaire.
・ Datefmt
Heure au format de date et d'heure spécifié.strftime()Utilisez ce qui est accepté par.
· Niveau
Définit le niveau d'enregistrement racine au niveau spécifié.
・ Flux
Use the specified stream to initialize the StreamHandler. Note that this argument is incompatible with filename - if both are present, stream is ignored.
##référence
https://docs.python.org/ja/2.7/library/logging.html
Recommended Posts