Le package ** logging ** fourni en standard est facile à utiliser, mais il est raisonnable. J'ai l'impression que le gestionnaire de fichiers n'est pas tué tant que le script n'est pas mort. Voici un exemple simple de comportement personnellement inattendu. (Peut-être que c'est le bon comportement ... Dites-m'en plus!)
sample_logging.py
from datetime import datetime as dt
import os, logging
def main():
for i in xrange(1,6):
log = logging.getLogger()
#i-ème répertoire de répétition
dir_name = "dir_{0}".format(i)
os.makedirs(dir_name)
#Fichier journal (que vous souhaitez créer) pour le i-ème répertoire de répétition
log_file_name = "{0}/lg_index{1}.log".format(dir_name, i)
logging.basicConfig(level = logging.INFO,\
filename = log_file_name,\
format = "[%(name)s: %(levelname)s @ %(asctime)s] %(message)s")
# log
log.info('hoge')
log.info('foo')
log.info(dt.now().strftime('%Y%m%d%H%M%S))
En guise de ressenti, dans chaque répertoire de dir_1, dir_2, ..., dir_5 Je voulais écrire un journal quand j'ai fait quelque chose, mais quand je fais ça Dans le fichier journal (dir_1 / lg_index1.log "de dir_1 où la journalisation a été définie en premier Toutes les informations (car level = logging.INFO dans ce cas) sont écrites. (Cette utilisation peut ne pas être correcte / froide en premier lieu.)
J'y ai fait référence (* j'ai été pressé par la copie)
sample_logging_new.py
from datetime import datetime as dt
import os, logging
def main():
for i in xrange(1,6):
log = logging.getLogger()
#i-ème répertoire de répétition
dir_name = "dir_{0}".format(i)
os.makedirs(dir_name)
#Fichier journal (que vous souhaitez créer) pour le i-ème répertoire de répétition
log_file_name = "{0}/lg_index{1}.log".format(dir_name, i)
log.setLevel(logging.INFO)
fh = logging.FileHandler(filename = log_file_name)
formatter = logging.Formatter(
fmt='"[%(name)s: %(levelname)s @ %(asctime)s] %(message)s"',
datefmt='%Y-%m-%d %H:%M:%S')
fh.setFormatter(formatter)
log.addHandler(fh)
# log
log.info('hoge')
log.info('foo')
log.info(dt.now().strftime('%Y%m%d%H%M%S))
# close file handler
log.removeHandler(fh)
del log, fh
@shima__shima m'a appris.
sample_logging_json.py
from datetime import datetime as dt
import os, json
def main():
for i in xrange(1,6):
#i-ème répertoire de répétition
info = {} #Dictionnaire pour mettre des données
dir_name = "dir_{0}".format(i)
os.makedirs(dir_name)
#Fichier journal (que vous souhaitez créer) pour le i-ème répertoire de répétition
log_file_name = "{0}/lg_index{1}.log".format(dir_name, i)
info['hoge'] = 0
info['foo'] = 0
info['bar'] = dt.now().strftime('%Y%m%d%H%M%S)
#Exporter le fichier json
with open(log_file_name, 'w') as f:
json.dump(info, f)
Je pensais que je n'avais pas à utiliser la journalisation si je voulais juste écrire des informations (paramètres, heure, etc.).
Recommended Posts