Logs are the first.
This is a simple wrapper to standard logging 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.
pip install epylog
-
Move to project root directory and create
logging.cfg
file:cd /project/root touch logging.cfg
-
Fill configuration file with you logging settings. Push to
targets
array everything you want to send to. And fillrules
array with logger names (use*
wildcard if you want) and set which targets loggers can use:{ "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: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
logging.cfg
is a simple JSON object that descxribes all sources that you planning to use and associates loggers with this sources.
Tagrets are sources where can you send your logs.
...
{
"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 are patterns for associating user loggers with specific configuration.
...
{
"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 |