Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/clivern/pylogging
:rugby_football: Python Logging Library
https://github.com/clivern/pylogging
email-notification flask logging python
Last synced: about 1 month ago
JSON representation
:rugby_football: Python Logging Library
- Host: GitHub
- URL: https://github.com/clivern/pylogging
- Owner: Clivern
- License: mit
- Created: 2015-08-27T15:16:38.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-02-29T20:27:29.000Z (10 months ago)
- Last Synced: 2024-11-16T03:14:41.918Z (about 1 month ago)
- Topics: email-notification, flask, logging, python
- Language: Python
- Homepage: http://clivern.github.io/PyLogging/
- Size: 53.7 KB
- Stars: 12
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
PyLogging
=========PyLogging is a light-weight python logging library. It provides ability to write logs in your own customized format. It is also provides support for custom log filters, custom log actions and email notifications.
*Current version: [v1.0.2]*
[![Build Status](https://travis-ci.org/Clivern/PyLogging.svg?branch=master)](https://travis-ci.org/Clivern/PyLogging)
[![PyPI version](https://badge.fury.io/py/PyLogging.svg)](https://badge.fury.io/py/PyLogging)Installation
------------
To install PyLogging run this command:
```
pip install pylogging
```
or [download](https://github.com/Clivern/pylogging/archive/1.0.2.zip) Package then run this command:
```
pip install PyLogging-1.0.2.zip
```Usage
-----
After installing the library, Read the following usage criteria:### Basic Usage
The typical usage of this library is like the following:
```
import pylogging
import os# Logs Dir Absolute Path
logs_path = os.path.dirname(os.path.abspath(__file__)) + '/logs/'
# Create Logger Instance
logger = pylogging.PyLogging(LOG_FILE_PATH = logs_path)
# Log Info Message
logger.info("Info Message")
# Log Warning Message
logger.warning("Warning Message.")
# Log Error Message
logger.error("Error Message.")
# Log Critical Message
logger.critical("Critical Message.")
# Log Normal Message
logger.log("Normal Log Message.")
```### Custom Configs
A list of a vailable configs are:
* `LOG_FILE_FORMAT`: Log file format (default:`%Y-%m-%d`).
* `LOG_FILE_PATH`: Logs dir absolute path and it is required (default:` `).
* `LOG_MESSAGE_FORMAT`: Log message format (default:`{TYPE}: <{DATETIME}> {MESSAGE}`).
* `DATES_FORMAT`: Dates format (default:`%Y-%m-%d`).
* `DATETIME_FORMAT`: Datetimes format (default:`%Y-%m-%d %H:%M`).
* `PLATFORM_DATA`: Whether to activate platform data (default:`False`).
* `ALERT_STATUS`: Email notification status (default:`False`).
* `ALERT_SUBJECT`: Email notification subject (default:`My APP Alert`).
* `ALERT_EMAIL`: Receiver Email or emails (format:`[email protected]` or `[email protected],[email protected],..`).
* `ALERT_TYPES`: Message types which will delivered to email (default:`['critical', 'error']`).
* `MAILER_HOST`: SMTP server (default:`smtp.gmail.com`).
* `MAILER_PORT`: SMTP server port (default:`587`).
* `MAILER_USER`: SMTP server user (default:`None`).
* `MAILER_PWD`: SMTP server password (default:`None`).
* `MAILER_FROM`: Sender email (default:`[email protected]`).To set configs in initialization:
```
import pylogging
import os# Logs dir absolute path
logs_path = os.path.dirname(os.path.abspath(__file__)) + '/logs/'
# Create a logger instance with custom configs
logger = pylogging.PyLogging(LOG_FILE_PATH = logs_path, LOG_FILE_FORMAT='%Y-%m-%d', DATES_FORMAT='%Y-%m-%d',..,..)
# So the form will be
logger = pylogging.PyLogging(LOG_KEY_1 = 'value', LOG_KEY_2='value',..,..)
```To set a config value:
```
logger.setConfig('CONFIG_KEY', 'config_value')
```To get a config value:
```
logger.getConfig('CONFIG_KEY')
```### Custom Filters
To define a filter:
```
def customFilter(type, msg):
# Filter message text here
return msgfilterIden = logger.addFilter(customFilter)
```To remove a filter:
```
logger.removeFilter(filterIden)
```### Custom Actions
To define an action:
```
def customAction(type, msg):
# Perform any custom action here
passactionIden = logger.addAction(customAction)
```To remove an action:
```
logger.removeAction(actionIden)
```### Email Notifications
To enable email notifications:
```
import pylogging
import os# Logs Dir Absolute Path
logs_path = os.path.dirname(os.path.abspath(__file__)) + '/logs/'
# Create Logger Instance
logger = pylogging.PyLogging(LOG_FILE_PATH = logs_path)
# Activate email alerting
logger.setConfig('ALERT_STATUS', True)
```Then set your own configurations like so
```
# Set default message subject
logger.setConfig('ALERT_SUBJECT', "My APP Alert")
# Email to send message to
logger.setConfig('ALERT_EMAIL', '[email protected]')
# OR send message to many emails
logger.setConfig('ALERT_EMAIL', '[email protected],[email protected],[email protected]')
# Message types to receive alerts for
logger.setConfig('ALERT_TYPES', ['critical', 'error'])# our own SMTP server (Library uses gmail)
logger.setConfig('MAILER_HOST', 'smtp.gmail.com')
# SMTP server port
logger.setConfig('MAILER_PORT', 587)
# SMTP server username (your gmail email)
logger.setConfig('MAILER_USER', '[email protected]')
# SMTP server password (your gmail password)
logger.setConfig('MAILER_PWD', 'gmailpass')# Message from
logger.setConfig('MAILER_FROM', '[email protected]')
```When you log messages, Messages of critical and error types will be delivered to emails:
```
# Log Info Message
logger.info("Info Message")
# Log Normal Message
logger.log("Normal Log Message.")
# Log Warning Message
logger.warning("Warning Message.")
# Log Error Message (with email notification)
logger.error("Error Message.")
# Log Critical Message (with email notification)
logger.critical("Critical Message.")
```So if you like to send alert to `[email protected]` and your email password is `dummypass` the library configs will be:
```
logs_path = os.path.dirname(os.path.abspath(__file__)) + '/logs/'
logger = pylogging.PyLogging(LOG_FILE_PATH = logs_path)
logger.setConfig('ALERT_STATUS', True)
logger.setConfig('ALERT_SUBJECT', "My APP Alert")
logger.setConfig('ALERT_EMAIL', '[email protected]')
logger.setConfig('ALERT_TYPES', ['critical', 'error'])
logger.setConfig('MAILER_HOST', 'smtp.gmail.com')
logger.setConfig('MAILER_PORT', 587)
logger.setConfig('MAILER_USER', '[email protected]')
logger.setConfig('MAILER_PWD', 'dummypass')
logger.setConfig('MAILER_FROM', '[email protected]')logger.info("Info Message")
logger.log("Normal Log Message.")
logger.warning("Warning Message.")
logger.error("Error Message.")
logger.critical("Critical Message.")
```Customizing
===========Log File
--------
Since log file name passes through `strftime(format)`, You can change file name into any valid time format string. For more info about [format strings](https://docs.python.org/2/library/time.html#time.strftime).
```
logger.setConfig('LOG_FILE_FORMAT', '%y-%m-%d')
```Log Message
-----------
By default you can use combination of available vars in log message format:* `{TYPE}`: Log message type.
* `{DATE}`: Log time date.
* `{DATETIME}`: Log time datetime.
* `{MESSAGE}`: Log message content.The default format is `{TYPE}: <{DATETIME}> {MESSAGE}`, You can change like the following:
```
logger.setConfig('LOG_MESSAGE_FORMAT', '{DATE}: {TYPE}-{MESSAGE}')
```To add additional platform vars. You need to activate them:
```
logger.setConfig('PLATFORM_DATA', True)
```This will allow usage of:
* `PL_TYPE`: The machine type, e.g. `i386`
* `PL_NAME`: The computer’s network name.
* `PL_PROCESSOR`: The (real) processor name, e.g. `amdk6`.
* `PL_PY_BUILD_DATE`: The Python build number.
* `PL_PY_COMPILER`: A string identifying the compiler used for compiling Python.
* `PL_PY_RELEASE`: The system’s release, e.g. `2.2.0`.
* `PL_OS`: The system/OS name, e.g. `Linux`, `Windows`
* `PL_TIMEZONE`: The system timezone.For example we can customize message format into:
```
logger.setConfig('PLATFORM_DATA', True)
logger.setConfig('LOG_MESSAGE_FORMAT', '{DATE}-{PL_OS}: {TYPE} - {MESSAGE}')
```
and so on.Misc
====Changelog
---------
Version 1.0.2:
```
Bug Fixes and docs enhancements.
```
Version 1.0.1:
```
Mailer class fixed.
```
Version 1.0.0:
```
initial release
```Acknowledgements
----------------© 2015, Clivern. Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php).
**PyLogging** is authored and maintained by [@clivern](http://github.com/clivern).