Oktatás * Programozás 2 * Szkriptnyelvek * levelezősök Félévek Linkek * kalendárium |
Py /
20170511bLogging Egy nagyobb projekt esetében már érdemes log-olást használni. Vagy pl. van egy szkriptünk, ami folyamatosan fut egy szerveren. Itt is érdemes log-olni, hogy akár napokkal korábbra is vissza tudjuk nézni, hogy milyen események történtek. Log-oláshoz a logging modult érdemes használni. Ennek a testreszabása nem teljesen triviális, ezért álljon itt egy kész megoldás, ami az esetek többségében megfelelő lehet: # mylogging.py import logging import sys DEBUG_LOG_FILENAME = "info.log" # set up formatting formatter = logging.Formatter("%(levelname)-5s %(asctime)s %(module)s.%(funcName)s() [%(lineno)d]: %(message)s", "%Y-%m-%d %H:%M:%S") # set up logging to STDOUT for all levels DEBUG and higher sh = logging.StreamHandler(sys.stdout) sh.setLevel(logging.DEBUG) sh.setFormatter(formatter) # set up logging to a file for all levels DEBUG and higher fh = logging.FileHandler(DEBUG_LOG_FILENAME) fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) # create Logger object mylogger = logging.getLogger('MyLogger') mylogger.setLevel(logging.DEBUG) mylogger.addHandler(sh) # enabled: stdout mylogger.addHandler(fh) # enabled: file # create shortcut functions debug = mylogger.debug info = mylogger.info warning = mylogger.warning error = mylogger.error critical = mylogger.critical if __name__ == "__main__": # its usage: for i in range(100): if i % 5 == 0: info("i is {i}".format(i=i)) if i % 50 == 0: debug("i is {i}".format(i=i)) Használata: #!/usr/bin/env python3 import mylogging as log def main(): log.info("the program has started") print("hello world") log.info("the program has ended") ############################################################################## if __name__ == "__main__": main() Kimenet: INFO 2017-05-11 15:41:45 alap.main() [6]: the program has started hello world INFO 2017-05-11 15:41:45 alap.main() [8]: the program has ended Mint látható, egy-egy sorban megtalálható a pontos dátum, melyik függvény melyik sora produkálta a kimenetet, ill. maga az üzenet. Linkek |
Blogjaim, hobbi projektjeim * The Ubuntu Incident [ edit ] |