Python-догу логирлөө
Чыныгы программалар өз ишин кабарлаган структуралуу, деңгээлдүү ыкма
logging модулу программаңызга убакыт белгиси коюлган, категорияланган билдирүүлөрдүн агымын чыгарууга мүмкүнчүлүк берет. print() тен айырмаланып, ар бир билдирүү маанилүүлүк деңгээлин алып жүрөт, бир нече жерге бирден багытталышы мүмкүн (консоль, файл, тармак) жана кодду өзгөртпөстөн күчөтүлүшү же басаңдатылышы мүмкүн. Орто масштабдагы жана өндүрүштүк программалар эмне болгонун, качан жана канчалык оор экенин ушинтип билдирет.
print()эмне үчүн мүчүлүштүктөрдү издөө куралы катары чектелүү экенин түшүндүрө аласыз,- беш логирлөө деңгээлинин ичинен туурасын тандай аласыз,
- аталышы бар логгер ала аласыз жана тамыр логгерди түшүнөсүз,
- жазууларды консолго жана файлга жөнөтүү үчүн иштеткичтерди жана форматтерлерди кошо аласыз,
logger.exceptionаркылуу өзгөчө учурларды толук изи менен жаза аласыз.
1. Эмне үчүн print() жетишсиз
Тилди үйрөнүп жатканда print() кодуңуз эмне кылып жатканын карап көрүүнүн табигый жолу болчу. Ал иштейт, бирок анда маанилүүлүк түшүнүгү да, эч кандай куралган структура да жок. Ар бир билдирүү бирдей, баары стандарттык чыгарууга барат, аларды тынчтандыруу үчүн саптарды физикалык түрдө өчүрүүгө же комментарий кылууга туура келет.
Чыныгы программа мындай суроолорго жооп бериши керек: кандай күнүмдүк маалымат болду? кандай эскертүүлөрдөн аман өттүк? кайсы каталар чындап бир нерсени бузду? print() менен буларды айырмалап болбойт, "өндүрүштө эскертүүлөрдү жана андан жаманды көрсөт, бирок мүчүлүштүктөрдү издеп жатканда баарын" деп кодду кайра жазбай айтуу да мүмкүн эмес.
| Маселе | print() | logging |
|---|---|---|
| Билдирүүнүн маанилүүлүгү | жок, баары бирдей | беш деңгээл |
| Чыгаруу кайда барат | ар дайым stdout | кошкон каалаган иштеткичтер |
| Билдирүүлөрдү өчүрүү | кодду өзгөртүү | бир деңгээл жөндөөсүн алмаштыруу |
| Убакыт жана булак | кол менен кошосуз | форматтер кошот |
| Толук изди көрсөтүү | кол менен | exc_info / exception() |
Логирлөө "билдирүү басып чыгаруу" ыңгайлуулугун сактап, өсүп жаткан программага керектүү көзөмөлдү кошот.