zpp_logs


Namezpp_logs JSON
Version 1.0.1 PyPI version JSON
download
home_pagehttps://github.com/ZephyrOff/zpp_logs
SummaryModule de gestion de logs
upload_time2024-09-11 09:39:39
maintainerNone
docs_urlNone
authorZephyrOff <contact@apajak.fr>
requires_pythonNone
licenseMIT License
keywords logs module zephyroff
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # zpp-logs
## Informations
Module pour la gestion des logs (à l'image de logging) avec des tuning personnalisés par niveau de logs
<br>

## Prérequis
- Python 3
<br>

## Installation
```console
pip install zpp-logs
```
<br>

## Utilisation
### <ins>Logger</ins>

Un logger est un objet qui permet de définir des options (handler, formatter, filter) pour un log.

```python
from zpp_logs import Logger

log = Logger()
```
<br>
Il est possible de lui donner en paramètre un fichier de configuration au format yaml pour configurer directement les différentes options

```python
from zpp_logs import Logger

log = Logger(configfile='config.yaml')
```

_Exemple de fichier yaml:_
```config
formatters:
    standard:
        format: "%(fore:deep_sky_blue_3a)%[%(date:%d/%m/%Y %H:%M:%S)%]%(attr:0)% - %(fore:medium_purple_4)%%(levelname)%%(attr:0)% - %(fore:grey_46)%%(msg)%%(attr:0)%"
    test:
        format: "%(epoch)% - %(msg)%"

filters:
    testfunc: test3.test

handlers:
    console:
        class: zpp_logs.Console_handler
        level: zpp_logs.CRITICAL
        ops: "<"
        formatter: test
        output: sys.stdout


logger:
    handlers: [console]
    filters: [testfunc]
```

<br>

Dans un Logger, nous pouvons ajouter/supprimer des handler et des filtres, afficher le compteur de log et appeler les méthodes de log.
Toutes ces options sont détaillées dans la suite.

<br>

### <ins>Handler</ins>

Différents handler sont disponibles pour permettre d'envoyer les logs dans la console, dans un fichier ou par mail.
Tous les handler disposent des méthodes:
- __setFormatter()__ pour ajouter un formatter
```python
cons.setFormatter(form)
```
la méthode attend un objet Formatter

<br>

- __setLevel()__ pour définir le niveau de log à appliquer
```python
cons.setLevel(zpp_logs.DEBUG)
```
la méthode attend un niveau de logs.
Il est possible de lui envoyer un argument ops pour définir le comportement du handler. (Par défaut ==)
```python
cons.setLevel(zpp_logs.ERROR, ops="<=")
```
le ops permet de comparaison pour trigger le handler. Dans l'exemple du dessus, le handler se déclenche si le log est de niveau ERROR ou inférieur.

<br>

- __addFilter()__ pour ajouter un filtre.
Le filter est soit un script (qui peut être une regex), soit une fonction (dans ce cas, le filter attends un retour True pour se déclencer)
```python
def test(message):
    if "bjr" in message:
        return True
    return False

cons.addFilter(MonModule.test)
```

<br>

- __removeFilter()__ pour supprimer un filtre.
Cette méthode permet de supprimer un filtre configuré

<br>

### Console_handler

Un Console_handler permet d'envoyer des messages dans la console.
Par défaut, le handler n'attend pas de paramètre mais peut recevoir:
- output: pour définir la destination (Par défaut sys.stdout)
- level: pour définir le niveau de logs attendu (Par défaut NOTSET)
- ops: pour définir le comportement du handler. (Par défaut ==) (Voir setLevel)

```python
log = Logger()
cons = Console_handler()
log.add_handler(cons)
```

<br>

### File_handler

Un File_handler permet d'envoyer des messages dans un fichier.
Par défaut, le handler attend le chemin du fichier de destination. (Peut recevoir un nom de fichier dynamique avec la syntaxe des formatter) <br>
Il peut aussi recevoir:
- rewrite: pour définir si le handler réécrit sur un fichier existant (Par défaut False)
- level: pour définir le niveau de logs attendu (Par défaut NOTSET)
- ops: pour définir le comportement du handler. (Par défaut ==) (Voir setLevel)

```python
log = Logger()
cons = File_handler('content.log')
log.add_handler(cons)
```

<br>

### RotateFile_handler

Un RotateFile_handler permet d'envoyer des messages dans un fichier en prenant en charge une rotation de logs en fonction d'une taille max.
Par défaut, le handler attend le chemin du fichier de destination. (Peut recevoir un nom de fichier dynamique avec la syntaxe des formatter) <br>
Il peut aussi recevoir:
- rewrite: pour définir si le handler réécrit sur un fichier existant (Par défaut False)
- level: pour définir le niveau de logs attendu (Par défaut NOTSET)
- ops: pour définir le comportement du handler. (Par défaut ==) (Voir setLevel)
- maxBytes: pour définir la taille max du fichier de log
- backupCount: pour définir le nombre maximum de fichier de log. Si la limite est atteinte, il supprime le fichier le plus ancien.

```python
log = Logger()
cons = RotateFile_handler('content.log')
log.add_handler(cons)
```

<br>

### SMTP_handler

Un SMTP_handler permet d'envoyer des messages par mail.
Par défaut, le handler attend les paramètres:
- smtphost: l'ip ou l'adresse du serveur SMTP sous forme de str. Possibilité de lui envoyer un tuple pour définir le port à utiliser (HOST, PORT)
- fromaddr: l'adresse mail de l'expéditeur sous forme de str
- toaddrs: la/les adresses mail des destinataires sous forme de str pour un destination ou une liste pour plusieurs 
- subject: l'objet du mail (Peut recevoir un objet dynamique avec la syntaxe des formatter)
<br>

Il peut aussi recevoir:
- credentials: pour définir les login de connexion sous forme de liste ou tuple (USERNAME, PASSWORD)
- secure: pour définir si la connexion doit être sécurisée (Par défaut None)
- timeout: pour définir le temps timeout pour la réponse du serveur SMTP (Par défaut 5.0)
- level: pour définir le niveau de logs attendu (Par défaut NOTSET)
- ops: pour définir le comportement du handler. (Par défaut ==) (Voir setLevel)

```python
log = Logger()
cons = SMTP_handler(smtphost='smtp.local.com', fromaddr='private@local.com', toaddrs=['user1@gmail.com', 'user2@gmail.com'], subject="Test de notification")
log.add_handler(cons)
```

<br>

### <ins>Formatter</ins>

Un formatter est un objet qui permet de définir le format du message de log envoyé
Dans un formatter, les trigger doivent être de la forme _%(trigger_name)%_
Si on veut formater un peu de texte pour aligner les logs, on peut définir un padding en ajoutant la taille avec le 2ème %
Par exemple, _%(trigger_name)5%_

Voici la liste des trigger disponibles

| Name | Description |
|----------|-------------|
| asctime | Date au format %d/%m/%Y %H:%M:%S:%f |
| date: strftime_format | Date dans le format qu'on veut |
| epoch | Date au format epoch |
| exc_info			 | Récupération du traceback |
| levelname | Nom du niveau de log |
| levelno			 | ID du niveau de log |
| msg | Message de log |
| filename | Nom du fichier d'exécution |
| filepath | Répertoire parent du fichier d'exécution |
| lineno | Numéro de la ligne du fichier d'exécution |
| functname | Nom de la fonction |
| path | Chemin actuel |
| process | Nom du process |
| processid | PID du process |
| username | Nom d'utilisateur qui exécute le script |
| uid | uid de l'utilisateur qui exécute le script (only linux) |
| os_name | Nom de l'OS |
| os_version | Version de l'OS |
| os_archi | Architecture de l'OS |
| mem_total | Capacité max de RAM |
| mem_available | Capacité disponible de RAM |
| mem_used | Capacité utilisée de RAM |
| mem_free | Capacité disponible de RAM |
| mem_percent | Capacité utilisée de RAM en pourcentage |
| swap_total | Capacité max de Swap |
| swap_used | Capacité utilisée de Swap |
| swap_free | Capacité disponible de Swap |
| swap_percent | Capacité utilisée de Swap en pourcentage |
| cpu_count | Nombre de core physique |
| cpu_logical_count | Nombre de core logique |
| cpu_percent | Pourcentage de CPU utilisé |
| current_disk_device | Nom du disque où se trouve le script |
| current_disk_mountpoint | Point de montage du disque où se trouve le script |
| current_disk_fstype | Format du disque où se trouve le script |
| current_disk_total | Capacité max du disque où se trouve le script |
| current_disk_used | Capacité utilisée du disque où se trouve le script |
| current_disk_free | Capacité disponible du disque où se trouve le script |
| current_disk_percent | Capacité utilisée en pourcentage du disque où se trouve le script |
| fore: color | Couleur de la police d'écriture |
| back: color | Couleur du fond de la police d'écriture |
| attr: attribute | Style de la police d'écriture |

<br>
Pour son utilisation, il suffit de créer un objet Formatter et de l'ajouter dans un handler.

```python
from zpp_logs import Logger, Formatter, Console_handler

log = Logger()
form = Formatter("%(fore:deep_sky_blue_3a)%[%(date:%d/%m/%Y %H:%M:%S)%]%(attr:0)% - %(fore:medium_purple_4)%%(levelname)%%(attr:0)% - %(fore:grey_46)%%(msg)%%(attr:0)%")
cons = Console_handler()
cons.setFormatter(form)
```

<br>

### <ins>Envoi des logs</ins>

Les méthodes pour envoyer des logs se déclinent en 7 niveaux: 
- log(message): zpp_logs.NOTSET
- good(message): zpp_logs.GOOD
- debug(message): zpp_logs.DEBUG
- info(message): zpp_logs.INFO
- warning(message): zpp_logs.WARNING
- error(message): zpp_logs.ERROR
- critical(message): zpp_logs.CRITICAL

<br>

Ces méthodes peuvent être appelées soit en direct, soit depuis un logger.
```python
from zpp_logs import Logger

logger = Logger(configfile="config.yaml")
logger.warning("Test de logs")
```
<br> 

### <ins>Compteur des logs</ins>

Il est possible de récupérer un dictionnaire contenant le compteur des logs envoyés par un logger.
```python
>>> logger.count()
{'CRITICAL': 0, 'ERROR': 0, 'WARNING': 1, 'INFO': 0, 'GOOD': 0, 'DEBUG': 0, 'NOTSET': 0}
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/ZephyrOff/zpp_logs",
    "name": "zpp_logs",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "logs module zephyroff",
    "author": "ZephyrOff <contact@apajak.fr>",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/26/94/7b22f913157b3fca7a918b2e0de6fb651a0a9538fa683789cf9ae35029e5/zpp_logs-1.0.1-py3-none-any.whl",
    "platform": null,
    "description": "# zpp-logs\r\n## Informations\r\nModule pour la gestion des logs (\u00c3\u00a0 l'image de logging) avec des tuning personnalis\u00c3\u00a9s par niveau de logs\r\n<br>\r\n\r\n## Pr\u00c3\u00a9requis\r\n- Python 3\r\n<br>\r\n\r\n## Installation\r\n```console\r\npip install zpp-logs\r\n```\r\n<br>\r\n\r\n## Utilisation\r\n### <ins>Logger</ins>\r\n\r\nUn logger est un objet qui permet de d\u00c3\u00a9finir des options (handler, formatter, filter) pour un log.\r\n\r\n```python\r\nfrom zpp_logs import Logger\r\n\r\nlog = Logger()\r\n```\r\n<br>\r\nIl est possible de lui donner en param\u00c3\u00a8tre un fichier de configuration au format yaml pour configurer directement les diff\u00c3\u00a9rentes options\r\n\r\n```python\r\nfrom zpp_logs import Logger\r\n\r\nlog = Logger(configfile='config.yaml')\r\n```\r\n\r\n_Exemple de fichier yaml:_\r\n```config\r\nformatters:\r\n    standard:\r\n        format: \"%(fore:deep_sky_blue_3a)%[%(date:%d/%m/%Y %H:%M:%S)%]%(attr:0)% - %(fore:medium_purple_4)%%(levelname)%%(attr:0)% - %(fore:grey_46)%%(msg)%%(attr:0)%\"\r\n    test:\r\n        format: \"%(epoch)% - %(msg)%\"\r\n\r\nfilters:\r\n    testfunc: test3.test\r\n\r\nhandlers:\r\n    console:\r\n        class: zpp_logs.Console_handler\r\n        level: zpp_logs.CRITICAL\r\n        ops: \"<\"\r\n        formatter: test\r\n        output: sys.stdout\r\n\r\n\r\nlogger:\r\n    handlers: [console]\r\n    filters: [testfunc]\r\n```\r\n\r\n<br>\r\n\r\nDans un Logger, nous pouvons ajouter/supprimer des handler et des filtres, afficher le compteur de log et appeler les m\u00c3\u00a9thodes de log.\r\nToutes ces options sont d\u00c3\u00a9taill\u00c3\u00a9es dans la suite.\r\n\r\n<br>\r\n\r\n### <ins>Handler</ins>\r\n\r\nDiff\u00c3\u00a9rents handler sont disponibles pour permettre d'envoyer les logs dans la console, dans un fichier ou par mail.\r\nTous les handler disposent des m\u00c3\u00a9thodes:\r\n- __setFormatter()__ pour ajouter un formatter\r\n```python\r\ncons.setFormatter(form)\r\n```\r\nla m\u00c3\u00a9thode attend un objet Formatter\r\n\r\n<br>\r\n\r\n- __setLevel()__ pour d\u00c3\u00a9finir le niveau de log \u00c3\u00a0 appliquer\r\n```python\r\ncons.setLevel(zpp_logs.DEBUG)\r\n```\r\nla m\u00c3\u00a9thode attend un niveau de logs.\r\nIl est possible de lui envoyer un argument ops pour d\u00c3\u00a9finir le comportement du handler. (Par d\u00c3\u00a9faut ==)\r\n```python\r\ncons.setLevel(zpp_logs.ERROR, ops=\"<=\")\r\n```\r\nle ops permet de comparaison pour trigger le handler. Dans l'exemple du dessus, le handler se d\u00c3\u00a9clenche si le log est de niveau ERROR ou inf\u00c3\u00a9rieur.\r\n\r\n<br>\r\n\r\n- __addFilter()__ pour ajouter un filtre.\r\nLe filter est soit un script (qui peut \u00c3\u00aatre une regex), soit une fonction (dans ce cas, le filter attends un retour True pour se d\u00c3\u00a9clencer)\r\n```python\r\ndef test(message):\r\n    if \"bjr\" in message:\r\n        return True\r\n    return False\r\n\r\ncons.addFilter(MonModule.test)\r\n```\r\n\r\n<br>\r\n\r\n- __removeFilter()__ pour supprimer un filtre.\r\nCette m\u00c3\u00a9thode permet de supprimer un filtre configur\u00c3\u00a9\r\n\r\n<br>\r\n\r\n### Console_handler\r\n\r\nUn Console_handler permet d'envoyer des messages dans la console.\r\nPar d\u00c3\u00a9faut, le handler n'attend pas de param\u00c3\u00a8tre mais peut recevoir:\r\n- output: pour d\u00c3\u00a9finir la destination (Par d\u00c3\u00a9faut sys.stdout)\r\n- level: pour d\u00c3\u00a9finir le niveau de logs attendu (Par d\u00c3\u00a9faut NOTSET)\r\n- ops: pour d\u00c3\u00a9finir le comportement du handler. (Par d\u00c3\u00a9faut ==) (Voir setLevel)\r\n\r\n```python\r\nlog = Logger()\r\ncons = Console_handler()\r\nlog.add_handler(cons)\r\n```\r\n\r\n<br>\r\n\r\n### File_handler\r\n\r\nUn File_handler permet d'envoyer des messages dans un fichier.\r\nPar d\u00c3\u00a9faut, le handler attend le chemin du fichier de destination. (Peut recevoir un nom de fichier dynamique avec la syntaxe des formatter) <br>\r\nIl peut aussi recevoir:\r\n- rewrite: pour d\u00c3\u00a9finir si le handler r\u00c3\u00a9\u00c3\u00a9crit sur un fichier existant (Par d\u00c3\u00a9faut False)\r\n- level: pour d\u00c3\u00a9finir le niveau de logs attendu (Par d\u00c3\u00a9faut NOTSET)\r\n- ops: pour d\u00c3\u00a9finir le comportement du handler. (Par d\u00c3\u00a9faut ==) (Voir setLevel)\r\n\r\n```python\r\nlog = Logger()\r\ncons = File_handler('content.log')\r\nlog.add_handler(cons)\r\n```\r\n\r\n<br>\r\n\r\n### RotateFile_handler\r\n\r\nUn RotateFile_handler permet d'envoyer des messages dans un fichier en prenant en charge une rotation de logs en fonction d'une taille max.\r\nPar d\u00c3\u00a9faut, le handler attend le chemin du fichier de destination. (Peut recevoir un nom de fichier dynamique avec la syntaxe des formatter) <br>\r\nIl peut aussi recevoir:\r\n- rewrite: pour d\u00c3\u00a9finir si le handler r\u00c3\u00a9\u00c3\u00a9crit sur un fichier existant (Par d\u00c3\u00a9faut False)\r\n- level: pour d\u00c3\u00a9finir le niveau de logs attendu (Par d\u00c3\u00a9faut NOTSET)\r\n- ops: pour d\u00c3\u00a9finir le comportement du handler. (Par d\u00c3\u00a9faut ==) (Voir setLevel)\r\n- maxBytes: pour d\u00c3\u00a9finir la taille max du fichier de log\r\n- backupCount: pour d\u00c3\u00a9finir le nombre maximum de fichier de log. Si la limite est atteinte, il supprime le fichier le plus ancien.\r\n\r\n```python\r\nlog = Logger()\r\ncons = RotateFile_handler('content.log')\r\nlog.add_handler(cons)\r\n```\r\n\r\n<br>\r\n\r\n### SMTP_handler\r\n\r\nUn SMTP_handler permet d'envoyer des messages par mail.\r\nPar d\u00c3\u00a9faut, le handler attend les param\u00c3\u00a8tres:\r\n- smtphost: l'ip ou l'adresse du serveur SMTP sous forme de str. Possibilit\u00c3\u00a9 de lui envoyer un tuple pour d\u00c3\u00a9finir le port \u00c3\u00a0 utiliser (HOST, PORT)\r\n- fromaddr: l'adresse mail de l'exp\u00c3\u00a9diteur sous forme de str\r\n- toaddrs: la/les adresses mail des destinataires sous forme de str pour un destination ou une liste pour plusieurs \r\n- subject: l'objet du mail (Peut recevoir un objet dynamique avec la syntaxe des formatter)\r\n<br>\r\n\r\nIl peut aussi recevoir:\r\n- credentials: pour d\u00c3\u00a9finir les login de connexion sous forme de liste ou tuple (USERNAME, PASSWORD)\r\n- secure: pour d\u00c3\u00a9finir si la connexion doit \u00c3\u00aatre s\u00c3\u00a9curis\u00c3\u00a9e (Par d\u00c3\u00a9faut None)\r\n- timeout: pour d\u00c3\u00a9finir le temps timeout pour la r\u00c3\u00a9ponse du serveur SMTP (Par d\u00c3\u00a9faut 5.0)\r\n- level: pour d\u00c3\u00a9finir le niveau de logs attendu (Par d\u00c3\u00a9faut NOTSET)\r\n- ops: pour d\u00c3\u00a9finir le comportement du handler. (Par d\u00c3\u00a9faut ==) (Voir setLevel)\r\n\r\n```python\r\nlog = Logger()\r\ncons = SMTP_handler(smtphost='smtp.local.com', fromaddr='private@local.com', toaddrs=['user1@gmail.com', 'user2@gmail.com'], subject=\"Test de notification\")\r\nlog.add_handler(cons)\r\n```\r\n\r\n<br>\r\n\r\n### <ins>Formatter</ins>\r\n\r\nUn formatter est un objet qui permet de d\u00c3\u00a9finir le format du message de log envoy\u00c3\u00a9\r\nDans un formatter, les trigger doivent \u00c3\u00aatre de la forme _%(trigger_name)%_\r\nSi on veut formater un peu de texte pour aligner les logs, on peut d\u00c3\u00a9finir un padding en ajoutant la taille avec le 2\u00c3\u00a8me %\r\nPar exemple, _%(trigger_name)5%_\r\n\r\nVoici la liste des trigger disponibles\r\n\r\n| Name | Description |\r\n|----------|-------------|\r\n| asctime | Date au format %d/%m/%Y %H:%M:%S:%f |\r\n| date: strftime_format | Date dans le format qu'on veut |\r\n| epoch | Date au format epoch |\r\n| exc_info\t\t\t | R\u00c3\u00a9cup\u00c3\u00a9ration du traceback |\r\n| levelname | Nom du niveau de log |\r\n| levelno\t\t\t | ID du niveau de log |\r\n| msg | Message de log |\r\n| filename | Nom du fichier d'ex\u00c3\u00a9cution |\r\n| filepath | R\u00c3\u00a9pertoire parent du fichier d'ex\u00c3\u00a9cution |\r\n| lineno | Num\u00c3\u00a9ro de la ligne du fichier d'ex\u00c3\u00a9cution |\r\n| functname | Nom de la fonction |\r\n| path | Chemin actuel |\r\n| process | Nom du process |\r\n| processid | PID du process |\r\n| username | Nom d'utilisateur qui ex\u00c3\u00a9cute le script |\r\n| uid | uid de l'utilisateur qui ex\u00c3\u00a9cute le script (only linux) |\r\n| os_name | Nom de l'OS |\r\n| os_version | Version de l'OS |\r\n| os_archi | Architecture de l'OS |\r\n| mem_total | Capacit\u00c3\u00a9 max de RAM |\r\n| mem_available | Capacit\u00c3\u00a9 disponible de RAM |\r\n| mem_used | Capacit\u00c3\u00a9 utilis\u00c3\u00a9e de RAM |\r\n| mem_free | Capacit\u00c3\u00a9 disponible de RAM |\r\n| mem_percent | Capacit\u00c3\u00a9 utilis\u00c3\u00a9e de RAM en pourcentage |\r\n| swap_total | Capacit\u00c3\u00a9 max de Swap |\r\n| swap_used | Capacit\u00c3\u00a9 utilis\u00c3\u00a9e de Swap |\r\n| swap_free | Capacit\u00c3\u00a9 disponible de Swap |\r\n| swap_percent | Capacit\u00c3\u00a9 utilis\u00c3\u00a9e de Swap en pourcentage |\r\n| cpu_count | Nombre de core physique |\r\n| cpu_logical_count | Nombre de core logique |\r\n| cpu_percent | Pourcentage de CPU utilis\u00c3\u00a9 |\r\n| current_disk_device | Nom du disque o\u00c3\u00b9 se trouve le script |\r\n| current_disk_mountpoint | Point de montage du disque o\u00c3\u00b9 se trouve le script |\r\n| current_disk_fstype | Format du disque o\u00c3\u00b9 se trouve le script |\r\n| current_disk_total | Capacit\u00c3\u00a9 max du disque o\u00c3\u00b9 se trouve le script |\r\n| current_disk_used | Capacit\u00c3\u00a9 utilis\u00c3\u00a9e du disque o\u00c3\u00b9 se trouve le script |\r\n| current_disk_free | Capacit\u00c3\u00a9 disponible du disque o\u00c3\u00b9 se trouve le script |\r\n| current_disk_percent | Capacit\u00c3\u00a9 utilis\u00c3\u00a9e en pourcentage du disque o\u00c3\u00b9 se trouve le script |\r\n| fore: color | Couleur de la police d'\u00c3\u00a9criture |\r\n| back: color | Couleur du fond de la police d'\u00c3\u00a9criture |\r\n| attr: attribute | Style de la police d'\u00c3\u00a9criture |\r\n\r\n<br>\r\nPour son utilisation, il suffit de cr\u00c3\u00a9er un objet Formatter et de l'ajouter dans un handler.\r\n\r\n```python\r\nfrom zpp_logs import Logger, Formatter, Console_handler\r\n\r\nlog = Logger()\r\nform = Formatter(\"%(fore:deep_sky_blue_3a)%[%(date:%d/%m/%Y %H:%M:%S)%]%(attr:0)% - %(fore:medium_purple_4)%%(levelname)%%(attr:0)% - %(fore:grey_46)%%(msg)%%(attr:0)%\")\r\ncons = Console_handler()\r\ncons.setFormatter(form)\r\n```\r\n\r\n<br>\r\n\r\n### <ins>Envoi des logs</ins>\r\n\r\nLes m\u00c3\u00a9thodes pour envoyer des logs se d\u00c3\u00a9clinent en 7 niveaux: \r\n- log(message): zpp_logs.NOTSET\r\n- good(message): zpp_logs.GOOD\r\n- debug(message): zpp_logs.DEBUG\r\n- info(message): zpp_logs.INFO\r\n- warning(message): zpp_logs.WARNING\r\n- error(message): zpp_logs.ERROR\r\n- critical(message): zpp_logs.CRITICAL\r\n\r\n<br>\r\n\r\nCes m\u00c3\u00a9thodes peuvent \u00c3\u00aatre appel\u00c3\u00a9es soit en direct, soit depuis un logger.\r\n```python\r\nfrom zpp_logs import Logger\r\n\r\nlogger = Logger(configfile=\"config.yaml\")\r\nlogger.warning(\"Test de logs\")\r\n```\r\n<br> \r\n\r\n### <ins>Compteur des logs</ins>\r\n\r\nIl est possible de r\u00c3\u00a9cup\u00c3\u00a9rer un dictionnaire contenant le compteur des logs envoy\u00c3\u00a9s par un logger.\r\n```python\r\n>>> logger.count()\r\n{'CRITICAL': 0, 'ERROR': 0, 'WARNING': 1, 'INFO': 0, 'GOOD': 0, 'DEBUG': 0, 'NOTSET': 0}\r\n```\r\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Module de gestion de logs",
    "version": "1.0.1",
    "project_urls": {
        "Documentation": "https://github.com/ZephyrOff/zpp_logs",
        "Homepage": "https://github.com/ZephyrOff/zpp_logs"
    },
    "split_keywords": [
        "logs",
        "module",
        "zephyroff"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "26947b22f913157b3fca7a918b2e0de6fb651a0a9538fa683789cf9ae35029e5",
                "md5": "98f7cd29d61c7667c9f140e260ca0663",
                "sha256": "519ecbb655e3ba0b1c45230bd99797d1a7ea76667e1e879d8863ef2b07347d54"
            },
            "downloads": -1,
            "filename": "zpp_logs-1.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "98f7cd29d61c7667c9f140e260ca0663",
            "packagetype": "bdist_wheel",
            "python_version": "source",
            "requires_python": null,
            "size": 10855,
            "upload_time": "2024-09-11T09:39:39",
            "upload_time_iso_8601": "2024-09-11T09:39:39.147327Z",
            "url": "https://files.pythonhosted.org/packages/26/94/7b22f913157b3fca7a918b2e0de6fb651a0a9538fa683789cf9ae35029e5/zpp_logs-1.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cc8d560aac241cd606f64365c58253ad5c3617508478f214168de6a85c283311",
                "md5": "b11ddd5c4f922ecc7f29d80626b7adba",
                "sha256": "1b91e13b4b2a00a3a03cd100c1450012552f5190a3bf25a9963c9eb33bbed9e9"
            },
            "downloads": -1,
            "filename": "zpp_logs-1.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "b11ddd5c4f922ecc7f29d80626b7adba",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 13438,
            "upload_time": "2024-09-11T09:39:40",
            "upload_time_iso_8601": "2024-09-11T09:39:40.546302Z",
            "url": "https://files.pythonhosted.org/packages/cc/8d/560aac241cd606f64365c58253ad5c3617508478f214168de6a85c283311/zpp_logs-1.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-11 09:39:39",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ZephyrOff",
    "github_project": "zpp_logs",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "zpp_logs"
}
        
Elapsed time: 0.29945s