Das standardmäßig mitgelieferte ** Protokollierungspaket ** ist einfach zu verwenden, aber vernünftig. Ich habe das Gefühl, dass der Dateihandler erst getötet wird, wenn das Skript stirbt. Das Folgende ist ein einfaches Beispiel für persönlich unerwartetes Verhalten. (Vielleicht ist das das richtige Verhalten ... Erzähl mir mehr!)
sample_logging.py
from datetime import datetime as dt
import os, logging
def main():
for i in xrange(1,6):
log = logging.getLogger()
#i-te Wiederholungsverzeichnis
dir_name = "dir_{0}".format(i)
os.makedirs(dir_name)
#Protokolldatei (erstellen möchten) für das i-te Wiederholungsverzeichnis
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))
Als Gefühl, in jedem Verzeichnis von dir_1, dir_2, ..., dir_5 Ich wollte ein Protokoll schreiben, wenn ich etwas tat, aber wenn ich das tue In der Protokolldatei (dir_1 / lg_index1.log "von dir_1, in der die Protokollierung zuerst festgelegt wurde Alle Informationen (in diesem Fall weil level = logging.INFO) werden ausgeschrieben. (Diese Verwendung ist möglicherweise überhaupt nicht korrekt / cool.)
Ich bezog mich darauf (* Ich wurde durch Kopieren gequetscht)
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-te Wiederholungsverzeichnis
dir_name = "dir_{0}".format(i)
os.makedirs(dir_name)
#Protokolldatei (erstellen möchten) für das i-te Wiederholungsverzeichnis
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 hat mich unterrichtet.
sample_logging_json.py
from datetime import datetime as dt
import os, json
def main():
for i in xrange(1,6):
#i-te Wiederholungsverzeichnis
info = {} #Wörterbuch zum Einfügen von Daten
dir_name = "dir_{0}".format(i)
os.makedirs(dir_name)
#Protokolldatei (erstellen möchten) für das i-te Wiederholungsverzeichnis
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)
#Exportieren Sie die JSON-Datei
with open(log_file_name, 'w') as f:
json.dump(info, f)
Ich dachte, ich müsste keine Protokollierung verwenden, wenn ich nur Informationen (Parameter, Zeit usw.) ausschreiben möchte.
Recommended Posts