Skip to content

Repository files navigation

Python Logging Loggly Handler

Build StatusCoverage Status

A simple Python logging Loggly handler that can be used to send to a Loggly Gen2 https endpoint. Borrowed the extra fields concept from the graypy logging library. Check out Loggly's Python logging documentation to learn more.

Installation

Download the repository using pip

sudo pip install loggly-python-handler

Use in python

Configuration

Create a Configuration file python.conf and add HTTPSHandler to Configuration File.

[handlers]
keys=HTTPSHandler
[handler_HTTPSHandler]
class=loggly.handlers.HTTPSHandler
formatter=jsonFormat
args=('https://logs-01.loggly.com/inputs/TOKEN/tag/python', True, logging.DEBUG)
# args[0]=url (Full URL for POST request)
# args[1]=SSL verify (True|False)
# args[2]=logging level (logging.DEBUG)
[formatters]
keys=jsonFormat
[loggers]
keys=root
[logger_root]
handlers=HTTPSHandler
level=INFO
[formatter_jsonFormat]
format={ "loggerName":"%(name)s", "asciTime":"%(asctime)s", "fileName":"%(filename)s", "logRecordCreationTime":"%(created)f", "functionName":"%(funcName)s", "levelNo":"%(levelno)s", "lineNo":"%(lineno)d", "time":"%(msecs)d", "levelName":"%(levelname)s", "message":"%(message)s"}
datefmt=

Use Configuration in python file

importloggingimportlogging.configimportloggly.handlerslogging.config.fileConfig('python.conf')
logger=logging.getLogger('myLogger')
logger.info('Test log')

Use in Django

settings.py

LOGGING= {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
'json': {
'format': '{ "loggerName":"%(name)s", "asciTime":"%(asctime)s", "fileName":"%(filename)s", "logRecordCreationTime":"%(created)f", "functionName":"%(funcName)s", "levelNo":"%(levelno)s", "lineNo":"%(lineno)d", "time":"%(msecs)d", "levelName":"%(levelname)s", "message":"%(message)s"}',
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': 'DEBUG',
'formatter': 'verbose',
},
'loggly': {
'class': 'loggly.handlers.HTTPSHandler',
'level': 'INFO',
'formatter': 'json',
'url': 'https://logs-01.loggly.com/inputs/TOKEN/tag/python',
'verify': False, # For self-signed certificates
},
},
'loggers': {
'django': {
'handlers': ['console', ],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
},
'your_app_name': {
'handlers': ['console', 'loggly'],
'level': 'INFO',
},
},
}

views.py

importlogginglogger=logging.getLogger(__name__)
deflogging_example(request):
"""logging example """logger.debug('this is DEBUG message.')
logger.info('this is INFO message.')
logger.warning('this is WARNING message.')
logger.error('this is ERROR message.')
logger.critical('this is CRITICAL message.')
returnResponse({}, status=status.HTTP_200_OK)

Replace

  • TOKEN: your Loggly Customer Token

About

Sends python logs to Loggly via HTTPS

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages