https://github.com/phamhongphuc1999/pcolorlogging
:bread: The powerful python logging
https://github.com/phamhongphuc1999/pcolorlogging
ansi-colors python-logging
Last synced: about 18 hours ago
JSON representation
:bread: The powerful python logging
- Host: GitHub
- URL: https://github.com/phamhongphuc1999/pcolorlogging
- Owner: phamhongphuc1999
- License: mit
- Created: 2021-08-18T02:20:39.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-02-03T07:27:36.000Z (over 2 years ago)
- Last Synced: 2025-05-17T23:11:23.042Z (about 1 month ago)
- Topics: ansi-colors, python-logging
- Language: Python
- Homepage:
- Size: 1.11 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
PColorLogging
The powerful python logging, you can create colorful logging and easy to add logging level or record attribute
## Reference
- [Installation](#installation)
- [Usage](#usage)---
### Installation
PColorLogging can be installed using pip as follows:
```shell
pip install PColorLogging
```---
### Usage
Here’s an example of how easy it is to get started:
```python
import loggingfrom PColorLogging import DEBUG, INFO, ERROR, WARNING, CRITICAL, add_level_name
from PColorLogging.Drawer.color import PColor, TextMode
from PColorLogging.Formatter.colored_formatter import ColoredFormatteradd_level_name(25, "custom")
colored_formatter = ColoredFormatter(f"[%(asctime)s] %(levelname)s: %(message)s", [
{"config": {"message": [PColor.WHITE]}, "level": [DEBUG]},
{"config": {"message": [PColor.GREEN], "custom": [PColor.B_WHITE]}, "level": [INFO]},
{"config": {"message": [PColor.YELLOW]}, "level": [WARNING]},
{"config": {"message": [PColor.RED, TextMode.UNDERLINE]}, "level": [ERROR]},
{"config": {"message": [PColor.CYAN, TextMode.CROSS]}, "level": [CRITICAL]},
{"config": {"message": [PColor.PURPLE]}, "level": [25]},
{"config": {"asctime": [PColor.BLUE, PColor.B_WHITE]}, "level":
[DEBUG, INFO, WARNING, ERROR, CRITICAL, 25]}
])logger = logging.getLogger()
console_handler = logging.StreamHandler()
console_handler.setFormatter(colored_formatter)logger.addHandler(console_handler)
logger.setLevel(DEBUG)logger.debug("this is debug")
logger.info("this is info")
logger.warning("this is warning")
logger.error("this is error")
logger.critical("this is critical")
logger.log(25, "this is custom")
```If you want to add custom record attribute, you should use `ExtraAdapterLogger`
```python
import loggingfrom PColorLogging import DEBUG, INFO, ERROR, WARNING, CRITICAL, add_level_name
from PColorLogging.Drawer.color import PColor, TextMode
from PColorLogging.Formatter.colored_formatter import ColoredFormatter
from PColorLogging.Logger.Adapter.extra_adapter_logger import ExtraAdapterLoggeradd_level_name(25, "custom")
colored_formatter = ColoredFormatter(f"[%(asctime)s] %(levelname)s: %(att1)s %(att2)s %(message)s", [
{"config": {"message": [PColor.WHITE]}, "level": [DEBUG]},
{"config": {"message": [PColor.GREEN], "custom": [PColor.B_WHITE]}, "level": [INFO]},
{"config": {"message": [PColor.YELLOW]}, "level": [WARNING]},
{"config": {"message": [PColor.RED, TextMode.UNDERLINE]}, "level": [ERROR]},
{"config": {"message": [PColor.CYAN, TextMode.CROSS]}, "level": [CRITICAL]},
{"config": {"message": [PColor.PURPLE]}, "level": [25]},
{"config": {"asctime": [PColor.BLUE, PColor.B_WHITE]}, "level":
[DEBUG, INFO, WARNING, ERROR, CRITICAL, 25]}
])console_handler = logging.StreamHandler()
console_handler.setFormatter(colored_formatter)extra_logger = ExtraAdapterLogger("logger", {"att1": "", "att2": ""})
extra_logger.add_handler(console_handler)
extra_logger.setLevel(DEBUG)extra_logger.debug("this is debug", extra={"att1": "att1-debug"})
extra_logger.info("this is info", extra={"att2": "att2-info"})
extra_logger.warning("this is warning", extra={"att1": "att1", "att2": "att2"})
extra_logger.error("this is error")
extra_logger.critical("this is critical")
extra_logger.log(25, "this is custom")
```
And then, you want to add maker function to `ExtraAdapterLogger`, you can use `set_maker` function
```python
def makeup(base_extra):
if "att1" in base_extra:
if base_extra['att1'] == "att1-debug":
return {"att1": [PColor.GREEN, PColor.B_YELLOW]}
if "att2" in base_extra:
if base_extra['att2'] == "att2-info":
return {"att2": [PColor.B_CYAN, PColor.YELLOW]}
return Noneextra_logger.set_maker(makeup)
```
Full example in [here](https://github.com/phamhongphuc1999/PColorLogging/tree/main/example/basic)