Metadata-Version: 2.4
Name: loggerizer
Version: 0.1.3
Summary: A flexible logging framework with JSON, file, and SMTP logging
Author-email: Ayman Kastali <aymankastali.backend@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/AymanKastali/loggerizer
Project-URL: Repository, https://github.com/AymanKastali/loggerizer
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: twine>=6.2.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pylint; extra == "dev"
Requires-Dist: ruff; extra == "dev"

# Loggerizer Logger Examples

This document demonstrates how to use individual loggers from **Loggerizer** separately without wrapping them in a main function.

---

## Console Logger

```python
from loggerizer.loggers import LoggerFactory
from loggerizer.enums import LogField

console_logger = LoggerFactory.console_logger(name="console_main", flat=True)
console.info("Console logger ready!")
```

## Console JSON Logger

```python
from loggerizer.loggers import LoggerFactory
from loggerizer.enums import LogField

console_json_logger = LoggerFactory.json_console_logger(
    name="console_json_main",
    extra_fields=[LogField.MODULE, LogField.THREAD_NAME, LogField.PROCESS],
)
console_json.info("Console JSON logger ready!")
```

## File Logger

```python
from loggerizer.loggers import LoggerFactory
from loggerizer.enums import LogField

file_log = LoggerFactory.file_logger(
    name="file_main",
    filename="app",
    extra_fields=[LogField.MODULE, LogField.LINE_NO, LogField.FUNC_NAME],
    flat=True,
)
file_log.warning("File logger writing to app.log")
```

## JSON File Logger

```python
from loggerizer.loggers import LoggerFactory
from loggerizer.enums import LogField

json_log = LoggerFactory.json_file_logger(
    name="json_file_main",
    filename="events",
    extra_fields=[LogField.MODULE, LogField.THREAD_NAME, LogField.PROCESS],
)
json_log.debug("JSON log entry")
```

## Timed Rotating Logger

```python
from loggerizer.loggers import LoggerFactory
from loggerizer.enums import LogField

timed = LoggerFactory.timed_rotating_logger(
    name="timed_logger",
    filename="timed_logs",
    extra_fields=[LogField.MODULE, LogField.PROCESS_NAME],
)
timed.info("Timed rotating log active")
```

## Size Rotating Logger

```python
from loggerizer.loggers import LoggerFactory
from loggerizer.enums import LogField

rotating = LoggerFactory.size_rotating_logger(
    name="rotating_logger",
    filename="rotating_logs",
    extra_fields=[LogField.MODULE, LogField.LINE_NO],
)
rotating.info("Size rotating log active")
```

## Null Logger

```python
from loggerizer.loggers import LoggerFactory
from loggerizer.enums import LogField

null_log = LoggerFactory.null_logger(name="null_main")
null_log.info("This message is discarded")
```

## SMTP Logger

```python
from loggerizer.config.smtp_config import SMTPConfig
from loggerizer.loggers import LoggerFactory
from loggerizer.enums import LogField

smtp_conf = SMTPConfig(
    host=("localhost", 1025),
    from_address="test@example.com",
    to_address=["admin@example.com"],
    subject="Critical Alert",
)

smtp_log = LoggerFactory.email_logger(
    name="smtp_main",
    smtp_config=smtp_conf,
    extra_fields=[LogField.MODULE, LogField.LINE_NO, LogField.FUNC_NAME],
)
smtp_log.error("Critical email sent!")
```

---

### Logger Features

* **Console Logger**: Outputs logs to the console.
* **JSON Console Logger**: Outputs logs in JSON format.
* **File Logger**: Writes logs to a standard log file.
* **JSON File Logger**: Writes logs in JSON format.
* **Timed Rotating Logger**: Rotates logs based on time intervals.
* **Size Rotating Logger**: Rotates logs based on file size.
* **Null Logger**: Discards log messages.
* **SMTP Logger**: Sends error messages via email.
