mirror of
https://github.com/kristoferssolo/bunyan-formatter.git
synced 2025-10-21 17:20:35 +00:00
docs: write README.md
This commit is contained in:
parent
725dd8e624
commit
ad7db29ac1
168
README.md
168
README.md
@ -1,3 +1,167 @@
|
||||
# bunyan-formatter
|
||||
# Bunyan Formatter
|
||||
|
||||
Describe your project here.
|
||||
<!-- toc -->
|
||||
|
||||
- [Description](#description)
|
||||
- [Installation](#installation)
|
||||
- [Usage](#usage)
|
||||
- [Examples](#examples)
|
||||
* [Basic Logging](#basic-logging)
|
||||
* [Error Logging with Exception](#error-logging-with-exception)
|
||||
* [Custom Fields](#custom-fields)
|
||||
- [Contributing](#contributing)
|
||||
- [License](#license)
|
||||
|
||||
<!-- tocstop -->
|
||||
|
||||
A custom formatter for Python's logging module that outputs logs in the Bunyan
|
||||
JSON format.
|
||||
|
||||
## Description
|
||||
|
||||
This package provides a `BunyanFormatter` class that formats log records into
|
||||
the Bunyan JSON format. Bunyan is a lightweight JSON logger for Node.js, but
|
||||
this formatter allows you to use the same log format in Python projects.
|
||||
|
||||
Key features:
|
||||
|
||||
- Outputs logs in JSON format
|
||||
- Includes project name, hostname, file path, line number, and other metadata
|
||||
- Supports various log levels (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
||||
- Handles both project and external file paths
|
||||
|
||||
## Installation
|
||||
|
||||
To install the Bunyan Formatter package, run:
|
||||
|
||||
```bash
|
||||
pip install bunyan-formatter
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
Here's a basic example of how to use the Bunyan Formatter in your Python project:
|
||||
|
||||
```python
|
||||
import logging
|
||||
from bunyan_formatter import BunyanFormatter
|
||||
|
||||
# Create a logger
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.setLevel(logging.DEBUG)
|
||||
|
||||
# Create a handler and set the formatter
|
||||
handler = logging.StreamHandler()
|
||||
formatter = BunyanFormatter(project_name="MyProject", project_root="/path/to/my/project")
|
||||
handler.setFormatter(formatter)
|
||||
|
||||
# Add the handler to the logger
|
||||
logger.addHandler(handler)
|
||||
|
||||
# Now you can use the logger
|
||||
logger.debug("This is a debug message")
|
||||
logger.info("This is an info message")
|
||||
logger.warning("This is a warning message")
|
||||
logger.error("This is an error message")
|
||||
logger.critical("This is a critical message")
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
### Basic Logging
|
||||
|
||||
```python
|
||||
logger.info("User logged in", extra={"username": "john_doe"})
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```json
|
||||
{
|
||||
"v": 0,
|
||||
"name": "MyProject",
|
||||
"msg": "User logged in",
|
||||
"level": 30,
|
||||
"levelname": "INFO",
|
||||
"hostname": "your-hostname",
|
||||
"target": "__main__",
|
||||
"line": 10,
|
||||
"file": "main.py",
|
||||
"extra": {
|
||||
"username": "john_doe"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Error Logging with Exception
|
||||
|
||||
```python
|
||||
try:
|
||||
result = 1 / 0
|
||||
except ZeroDivisionError as e:
|
||||
logger.exception("An error occurred", exc_info=True)
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```json
|
||||
{
|
||||
"v": 0,
|
||||
"name": "MyProject",
|
||||
"msg": "An error occurred",
|
||||
"level": 50,
|
||||
"levelname": "ERROR",
|
||||
"hostname": "your-hostname",
|
||||
"target": "__main__",
|
||||
"line": 15,
|
||||
"file": "main.py",
|
||||
"err": {
|
||||
"message": "division by zero",
|
||||
"name": "ZeroDivisionError",
|
||||
"stack": [
|
||||
// Stack trace here
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Custom Fields
|
||||
|
||||
You can add custom fields to your log entries:
|
||||
|
||||
```python
|
||||
logger.info("Order processed", extra={
|
||||
"order_id": 12345,
|
||||
"customer_id": 67890,
|
||||
"total_amount": 100.00
|
||||
})
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```json
|
||||
{
|
||||
"v": 0,
|
||||
"name": "MyProject",
|
||||
"msg": "Order processed",
|
||||
"level": 30,
|
||||
"levelname": "INFO",
|
||||
"hostname": "your-hostname",
|
||||
"target": "__main__",
|
||||
"line": 20,
|
||||
"file": "main.py",
|
||||
"extra": {
|
||||
"order_id": 12345,
|
||||
"customer_id": 67890,
|
||||
"total_amount": 100.0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Please submit pull requests or issues on our GitHub repository.
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the LICENSE file for details.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user