From 2c8a7d672669f350f7827051ac42c66fdd6252f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Kotiuk?= Date: Tue, 23 Jan 2024 15:07:20 +0100 Subject: [PATCH] =?UTF-8?q?Dodanie=20opisu=20log=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../4_biblioteki_i_narz\304\231dzia.md" | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git "a/docs/Python\360\237\220\215/4_biblioteki_i_narz\304\231dzia.md" "b/docs/Python\360\237\220\215/4_biblioteki_i_narz\304\231dzia.md" index 29d976f0..07c7a915 100644 --- "a/docs/Python\360\237\220\215/4_biblioteki_i_narz\304\231dzia.md" +++ "b/docs/Python\360\237\220\215/4_biblioteki_i_narz\304\231dzia.md" @@ -46,6 +46,50 @@ można tutaj podać typ (`int`, `str`), `argparse.FileType` (aby sprawdzić popr - `choices` - `nargs` - ile razy może się pojawić ten argument +## Logowanie (logging) + + +Wbudowane biblioteka [logging](https://docs.python.org/3/library/logging.html) w Pythonie dostarcza gotowych mechanizmów do generowania, formatowania oraz zarządzania logami systemowymi. + +Minimalny przykład: + +```python +import logging + +logging.debug("This is a debug") +logging.info("This is an info") +logging.warning("This is a warning") +logging.error("This is an error") +logging.critical("This is a critical message") +#> WARNING:root:This is a warning +#> ERROR:root:This is an error +#> CRITICAL:root:This is a critical message +``` + +Dla takiego sktyptu otrzymany tylko ostatnie 3 linijki, ponieważ domyślny poziom logów jest za niski. + +Do odpowiedniego ustawienia tego parametru można użyć funkcji [logging.basicConfig](https://docs.python.org/3/library/logging.html#logging.basicConfig) + +```python +logging.basicConfig(level=logging.DEBUG) +logging.debug('To już się wyświetli') +``` + +Za pomocą tej funkcji możemy określić inne podstawowe parametry jak format, kodowanie, styl, format daty, plik z logami etc. + +### Formatowanie logów + +Format logów można zdefiniować za pomocą jednego stringa odpowiadającego określonej składni. + +```py +import logging +logging.basicConfig(format='%(asctime)s %(message)s') +logging.warning('is when this event was logged.') +# 2019-12-12 11:51:42,692 is when this event was logged. +``` + +W definicjach logów odwołujemy się do atrybutów klasy [LogRecord](https://docs.python.org/3/library/logging.html#logrecord-attributes). + ## Manipulacja tekstem ### Stringi wielolinijkowe