Recent Changes - Search:

Oktatás

* Programozás 2
  + feladatsor
  + C feladatsor
  + Python feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

* levelezősök
  + Adator. prog.
  + feladatsor
  + quick link

teaching assets


Félévek

* 2024/25/1
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

Py /

20170511b

Logging

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

Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2017 May 11, 16:09