# EPYLOG
Logs are the first.
This is a simple wrapper to standard [logging](https://docs.python.org/3/library/logging.html) library for Python.
Epylog provides to send log data to different sources e.g. file, rsyslog, graylog, http, etc.
Use different loggers for different needs and manage it from one place.
[](https://travis-ci.org/iPhosgen/epylog) [](https://pypi.python.org/pypi/epylog) [](https://app.fossa.com/projects/git%2Bgithub.com%2FiPhosgen%2Fepylog?ref=badge_shield)
## Installation
```shell script
pip install epylog
```
## Usage
- Move to project root directory and create `logging.cfg` file:
```shell script
cd /project/root
touch logging.cfg
```
- Fill configuration file with you logging settings. Push to `targets` array everything you want to send to. And fill `rules` array with logger names (use `*` wildcard if you want) and set which targets loggers can use:
```json
{
"targets": [
{
"name": "fl",
"type": "file",
"filename": "/var/log/my_log.log"
},
{
"name": "gl",
"type": "graylog",
"host": "localhost",
"port": 12202,
"facility": "test"
},
{
"name": "rsl",
"type": "syslog",
"address": "localhost",
"facility": "test"
}
],
"rules": [
{
"name": "my_test_*",
"min-level": "info",
"write-to": "fl, gl",
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
},
{
"name": "*",
"min-level": "warning",
"write-to": "rsl",
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
}
]
}
```
- Finally call `getLogger` function to initialize your logger:
```python
from epylog import Logger
# put some code here
logger = Logger.getLogger('my_test_logger')
logger.info('Hello from %s', logger.name)
```
- Enjoy sending your logs everywhere
## Configuration reference
`logging.cfg` is a simple JSON object that descxribes all sources that you planning to use and associates loggers with this sources.
### Targets
*Tagrets* are sources where can you send your logs.
```json
...
{
"name": "fl",
"type": "file",
...
}
...
```
Field | Description
------------ | -------------
name | Unique name of target
type | Target type. Now availible `file`, `watch-file`, `syslog`, `http` and `graylog` target types
other fields | Other fields associated with specific target e.g. `filename`, `host`, `facility`, etc.
### Rules
*Rules* are patterns for associating user loggers with specific configuration.
```json
...
{
"name": "my_test_*",
"min-level": "info",
"write-to": "fl, gl",
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
}
...
```
Field | Description
------------ | -------------
name | Unique name(s) of logger given by `getLogger` method. Use `*` wildcard for applying same settings for group of loggers
min-level | Minimum logging level
write-to | Target names splitted by comma without whitespases that will be asociated with this logger(s)
format | Log line [format](https://docs.python.org/3/library/logging.html#formatter-objects)
## License
[](https://app.fossa.io/projects/git%2Bgithub.com%2FiPhosgen%2Fepylog?ref=badge_large)