目次
1. Ano ang logging module ng Python
Sa Python, anglogging
module ay isang pamantayang kasangkapan para magtala ng katayuan ng pagpapatakbo ng programa at impormasyon tungkol sa mga error, at ginagamit para sa debugging at monitoring sa oras ng operasyon. Ang kaibhan nito sa print
statement ay na ang logging
module ay maraming kakayahan at nagbibigay-daan sa masusing kontrol sa antas ng log, destinasyon ng output, at format. Dahil dito, nagagawang mahusay ng mga developer na matukoy at maunawaan ang mga aberya at kalagayan ng programa.Mga uri at gamit ng mga antas ng log
- DEBUG: Detalyadong impormasyon sa debugging. Kadalasang ginagamit sa yugto ng development.
- INFO: Pangkalahatang impormasyon sa pagpapatakbo. Ginagamit para sa pagsuri na normal ang pagtakbo.
- WARNING: Mga banayad na problema o paalala. Hindi direktang nakaaapekto sa pagtakbo ng programa, ngunit nagpapahiwatig ng potensyal na problema.
- ERROR: Mensahe ng error kapag may ilang feature na hindi gumagana nang maayos. Nagpapahiwatig ng sitwasyong humahadlang sa pagpapatakbo ng programa.
- CRITICAL: Malubhang error. Nagpapahiwatig ng nakamamatay na problema kung saan hindi na maipagpapatuloy ang pagpapatakbo ng buong programa.
2. Pangunahing paggamit ng logging
logging
module ang gagamitin para tingnan ang pangunahing paraan ng paglalabas ng log.import logging
# Itakda ang antas ng log at ang format
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# Paglalabas ng log sa bawat antas
logging.debug('Impormasyong debug: detalyadong impormasyong pang-diagnostiko')
logging.info('Mensahe ng impormasyon: kumpirmasyon ng normal na paggana')
logging.warning('Mensahe ng babala: kalagayang nangangailangan ng pag-iingat')
logging.error('Mensahe ng error: may naganap na problema')
logging.critical('Mensahe ng kritikal: pagtigil ng sistema')
Sa logging.basicConfig()
, itinatakda ang destinasyon ng output ng log (default ay standard output), ang antas ng log, at ang format. Sa halimbawa sa itaas, dahil nakatakda sa level=logging.DEBUG
, ilalabas ang lahat ng log na nasa antas na DEBUG o mas mataas.3. Pag-customize ng destinasyon ng output at format ng log
Maaari ring baguhin ang default na destinasyon ng output at i-customize ang format ng log. Halimbawa, upang i-output ang log sa isang file, gamitin angFileHandler
.Output sa file at format
import logging
# Pag-configure ng file handler
file_handler = logging.FileHandler('app.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# Pag-configure ng logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
# Output ng log
logger.debug('Impormasyong debug sa file')
logger.info('Mensaheng impormasyon sa file')
Sa code sa itaas, ginagamit ang FileHandler
upang i-output ang log sa app.log
. Batay sa format na tinukoy ng Formatter
, isinusulat ang mga mensahe ng log.4. Pag-rotate ng mga file ng log
Sa pangmatagalang operasyon, mahalaga ang pag-rotate ng mga file ng log para hindi masyadong lumaki ang mga ito. Kapag gumamit ka ngRotatingFileHandler
, maaari mong kontrolin ang laki at bilang ng mga file ng log.RotatingFileHandler
halimbawa ng paggamit
import logging
from logging.handlers import RotatingFileHandler
# Pag-configure ng rotation handler
handler = RotatingFileHandler('app.log', maxBytes=5000, backupCount=3)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# Pag-configure ng logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(handler)
# Pag-output ng log
for i in range(100):
logger.debug(f'Pagsubok sa pag-rotate {i}')
Sa code na ito, itinatakda ng maxBytes
ang pinakamataas na laki ng log file sa 5000 byte, at itinatakda ng backupCount
ang bilang ng mga backup file sa 3. Kapag lumampas ang log file sa tinukoy na laki, magsusulat ito ng log sa bagong file at i-backup ang lumang file.
5. Paglalabas sa file ayon sa antas ng log
Sa paglalabas ng mga log sa magkakaibang file para sa bawat tiyak na antas ng log, mapapahusay ang pagiging mabasa at episyensya ng pagsusuri ng mga log. Para dito, gumagamit ng custom na filter at maramihangFileHandler
.Halimbawa ng paglalabas sa file ayon sa antas ng log
import logging
class ErrorFilter(logging.Filter):
def filter(self, record):
return record.levelno == logging.ERROR
# Ilabas ang mga log na antas ERROR sa hiwalay na file
error_handler = logging.FileHandler('error.log')
error_handler.setLevel(logging.ERROR)
error_handler.addFilter(ErrorFilter())
error_handler.setFormatter(formatter)
# Pag-configure ng logger
logger.addHandler(error_handler)
# Paglalabas ng log
logger.error('Ang log na antas ERROR ay mailalabas sa file')
Sa halimbawang ito, gumagawa tayo ng klase ng ErrorFilter
upang i-filter lamang ang mga log na antas ERROR at ilabas ang mga ito sa error.log
. Sa ganitong paraan, maitatala ang mga error log lamang sa hiwalay na file.6. Mga Pinakamahusay na Gawi at Mga Dapat Tandaan
Upang magamit nang wasto ang mga log, kailangang isaalang-alang ang mga sumusunod na pinakamahusay na gawi at mga dapat tandaan。Wastong paggamit ng antas ng log
- Sa panahon ng pagpapaunlad, gamitin ang antas na
DEBUG
upang magtala ng detalyadong impormasyon, at kapag nasa operasyon, lumipat sa mga antas naINFO
oWARNING
upang itala lamang ang mahahalagang impormasyon. - Dahil maaaring magdulot ng pagbaba ng pagganap ang sobrang paglalabas ng log, tiyaking ang kinakailangang impormasyon lamang ang itinatala.
Seguridad at Pagkapribado ng mga Log
- Mag-ingat na huwag magtala ng personal o kumpidensyal na impormasyon sa mga log. Kung kinakailangan, magpatupad ng mga hakbang tulad ng pag-mask ng data.
- Magtakda ng angkop na mga pahintulot para sa mga log file upang maiwasan ang hindi awtorisadong pag-access.
7. Buod
logging
na modyul ay nagtatala nang episyente ng kalagayan ng pagpapatakbo ng programa at lubhang kapaki-pakinabang sa pagde-debug at sa operasyon. Sa pamamagitan ng wastong pagsasaayos ng antas ng log, patutunguhan ng output, pormat, at rotasyon, at ng detalyadong pag-unawa sa kalagayan ng pagpapatakbo ng programa, maaari itong magresulta sa maagang pagtuklas at paglutas ng mga problema. Gamitin ang pinakamahuhusay na gawi at isagawa ang wastong pamamahala ng mga log.