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.
Download the repository using pip
sudo pip install loggly-python-handlerCreate 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=
importloggingimportlogging.configimportloggly.handlerslogging.config.fileConfig('python.conf')
logger=logging.getLogger('myLogger')
logger.info('Test log')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',
},
},
}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
