- 1 1. Täielik juhend Pythonis logimise kohta | Silumisest tootmisse
- 2 2. Mis on Python’i logimine? Põhikontseptsioonid ja miks see vajalik on
- 3 3. Kuidas alustada logimisega Python’i sisseehitatud logging‑mooduliga
- 4 4. Kuidas väljastada logid failidesse ja konsooli Pythonis
- 5 5. Efektiivsed logimise tehnikad Python projektides
- 6 6. Kolm soovitatud teeki Python logimise täiustamiseks
- 7 7. Pythoni logimise küsimuste lahendamine!
- 8 8. Valda Pythoni logimist arendusefektiivsuse tõstmiseks
1. Täielik juhend Pythonis logimise kohta | Silumisest tootmisse
Kui arendad programme Pythonis, on logimine oluline vigade tuvastamiseks ja käitumise kontrollimiseks.
See artikkel selgitab kõike alates põhilistest kontseptsioonidest kuni praktiliste tehnikateni, et Python’i algajad saaksid logimist tõhusalt kasutada.
2. Mis on Python’i logimine? Põhikontseptsioonid ja miks see vajalik on
Logimine on mehhanism, millega salvestatakse teavet ja vigu, mis tekivad programmi käivitamisel. Logimise korrektne kasutamine pakub järgmisi eeliseid:
Logimise eelised
- Lihtsam veaanalüüs – aitab täpselt määrata, kus vead tekkisid ja mis need põhjustasid.
- Programmi käitumise jälgimine – näed, millised osad töötavad õigesti ja kus esinevad probleemid.
- Operatiivse monitooringu võimaldamine – loob aluse süsteemi tervise pidevaks jälgimiseks tootmiskeskkonnas.
Erinevus print()-ga
Algajate poolt sageli kasutatav print()‑funktsioon on mugav silumiseks, kuid tõsise arenduse puhul on sellel järgmised piirangud:
- Ei saa paindlikult määrata väljundi sihtkohta (nt failid või välised teenused).
- Ei võimalda hallata logimise tasemeid (olukordade tõsidusastmeid).
Neid probleeme saab lahendada, kasutades Python’i standardset logging‑moodulit.

3. Kuidas alustada logimisega Python’i sisseehitatud logging‑mooduliga
Python sisaldab sisseehitatud logging‑moodulit, mis teeb logide väljastamise lihtsaks. See jaotis selgitab põhilist kasutamist.
Logimise tasemed ülevaade
logging‑moodul võimaldab määrata “logimise taseme”, mis näitab logisõnumi tõsidust. Peamised tasemed on:
- DEBUG – silumisinfo. Kasulik arendamise ajal.
- INFO – informatiivsed sõnumid. Näitab programmi edenemist.
- WARNING – hoiatused. Näitab võimalikke probleeme.
- ERROR – vead. Näitab, et programm ei tööta korrektselt.
- CRITICAL – kriitilised vead. Näitab süsteemi kokkujooksmist.
Põhiline kasutamine
Allpool on lihtne näide logimise kasutamisest logging‑mooduliga.
import logging
# Basic logging configuration
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
# Example output for each log level
logging.debug('This is debug information.')
logging.info('This is an info message.')
logging.warning('This is a warning message.')
logging.error('This is an error message.')
logging.critical('This is a critical error message.')
Koodi selgitus
basicConfig– konfigureerib logimise väljundi. Parameeterlevelvõimaldab määrata minimaalset logimise taset, mis väljastatakse.- Vormingu määratlus – parameeter
formatvõimaldab kohandada logisõnumite vormingut. - Näide:
%(asctime)stähistab ajatemplit,%(levelname)slogimise taset ja%(message)ssõnumi sisu.
4. Kuidas väljastada logid failidesse ja konsooli Pythonis
Logisid saab salvestada mitte ainult ekraanile, vaid ka failidesse või välistes süsteemidesse. See jaotis selgitab, kuidas konfigureerida erinevaid väljundi sihtkohti.
Logimine konsooli
logging‑mooduli vaikeseaded väljastavad logid konsooli.
import logging
logging.basicConfig(level=logging.INFO)
logging.info('Example of logging to the console')
Logimine faili
Logide salvestamiseks faili tuleb basicConfig‑funktsioonis määrata parameeter filename.
import logging
logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s - %(message)s')
logging.info('This is an example of logging to a file.')
Logimine nii konsooli kui ka faili
Kui konfigureerid mitu väljundi sihtkohta, kasuta logging‑mooduli handler‑eid.
import logging
# Create a logger
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
# Console handler
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
# File handler
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.INFO)
# Configure the handler format
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
# Add handlers to the logger
logger.addHandler(console_handler)
logger.addHandler(file_handler)
logger.info('Example log that will be output to both the console and the file.')

5. Efektiivsed logimise tehnikad Python projektides
See jaotis tutvustab logimise parimaid tavasid, mis on kasulikud reaalses maailmas projektides. Õpi tehnikaid tõhusaks silumiseks ja logihalduse parandamiseks.
Järjekindel logimise konfiguratsioon
Suuremahulistes projektides on järjekindel logimise konfiguratsioon oluline. Kui mitu moodulit või meeskonnaliiget koostööd teevad, muudab ühtsete vormingute ja logitasemete seadistamine analüüsi ja tõrkeotsingu lihtsamaks.
Allpool on näide järjekindlast logimise konfiguratsioonist.
import logging
# Common logging configuration function
def setup_logger(name, log_file, level=logging.INFO):
handler = logging.FileHandler(log_file)
handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
logger = logging.getLogger(name)
logger.setLevel(level)
logger.addHandler(handler)
return logger
# Create loggers for each module
app_logger = setup_logger('app_logger', 'app.log')
db_logger = setup_logger('db_logger', 'db.log')
# Example of log output
app_logger.info('Application log message')
db_logger.error('Database error message')
Vea käsitlemise ja logimise kombineerimine
Vea käsitlemisel (erindite käsitlemisel) võimaldab korralik logimine teavet kiiresti mõista probleemide üksikasju.
Allpool on näide logimisest, kui erind tekib.
import logging
logging.basicConfig(filename='error.log', level=logging.ERROR, format='%(asctime)s - %(levelname)s - %(message)s')
try:
# Example code that raises an error
1 / 0
except ZeroDivisionError as e:
logging.error(f'A division-by-zero error occurred: {e}')
Konteksti teabe lisamine logisõnumitesse
Sõltuvalt projektist võimaldab logisõnumitesse lisada täiendavat konteksti teavet (nt kasutaja ID, tehingu ID) üksikasjalikumat analüüsi.
import logging
logging.basicConfig(filename='context.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
user_id = 12345
transaction_id = 'txn_001'
logging.info(f'User ID: {user_id}, Transaction ID: {transaction_id} - Operation succeeded.')
Õige logifiltreerimine
Kui genereeritakse suures koguses logisid, on tõhus kasutada filtreerimist, et väljastada ainult vajalikud logid. Allpool on näide kohandatud filtrist.
import logging
class DebugFilter(logging.Filter):
def filter(self, record):
return record.levelno == logging.DEBUG
logger = logging.getLogger('filtered_logger')
handler = logging.StreamHandler()
handler.addFilter(DebugFilter())
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug('This is a debug log.')
logger.info('This will not be displayed.')
6. Kolm soovitatud teeki Python logimise täiustamiseks
Lisaks Pythoni sisseehitatud logging moodulile on mitmeid kasulikke logimise teeke. See jaotis toob esile kolm eriti populaarset.
Loguru: Lihtne logimise teek algajatele
Funktsioonid:
- Lihtne paigaldus ja seadistamine.
- Intuitiivsem süntaks kui standardne
logging.
Paigaldus:
pip install loguru
Põhiline kasutamine:
from loguru import logger
logger.info('This is log output using Loguru.')
logger.error('Error messages can be logged easily, too.')
Logzero: Kergekaaluline, lihtsalt kasutatav logimise teek
Omadused:
- Kergesti kohandatav.
- Sisseehitatud logi rotatsioon.
Paigaldus:
pip install logzero
Põhiline kasutamine:
from logzero import logger
logger.info('Log output using Logzero')
logger.warning('This is a warning message.')
Structlog: Teek, mis on spetsialiseerunud struktureeritud logimisele
Omadused:
- Väljastab logid kergesti JSON-formaadis.
- Sobib hästi jaotatud süsteemidele ja pilvkeskkondadele.
Paigaldus:
pip install structlog
Põhiline kasutamine:
import structlog
logger = structlog.get_logger()
logger.info('event', user='12345', action='login')

7. Pythoni logimise küsimuste lahendamine!
K1. Miks logid ei väljasta?
Vastus:
Kontrollige, kas logi tase on sobivalt seatud. Vaikimisi väljastatakse ainult WARNING taseme või kõrgema logid.
K2. Mis siis, kui logifail kasvab liiga suureks?
Vastus:
Saate kasutada RotatingFileHandler logifailide rotatsiooniks, kui need saavutavad teatud suuruse.
K3. Kuidas valida kolmanda osapoole teeke?
Vastus:
Valige oma projekti suuruse ja nõuete põhjal. Väikeste projektide jaoks sobib Loguru; kui vajate struktureeritud logimist, on Structlog sobivam.
8. Valda Pythoni logimist arendusefektiivsuse tõstmiseks
See artikkel katab kõik alates Pythoni logimise põhitõdedest kuni arenenud tehnikate ja kasulike kolmanda osapoole teekideni. Sobiv logimine võib oluliselt parandada silutamisefektiivsust ja süsteemi jälgimise täpsust. Proovige alustada juba täna!



