All Projects → logdna → python

logdna / python

Licence: MIT License
A python package for sending logs to LogDNA

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Labels

Projects that are alternatives of or similar to python

menu-hamburger
🍔 A clean, simple and easy to use library to create a Menu Hamburger
Stars: ✭ 17 (-52.78%)
Mutual labels:  lib
client-js
JS client for polygon.io api
Stars: ✭ 81 (+125%)
Mutual labels:  lib
TagEditText
A simple Android Tag EditText
Stars: ✭ 14 (-61.11%)
Mutual labels:  lib
node-api-problem
HTTP Problem Utility
Stars: ✭ 24 (-33.33%)
Mutual labels:  lib
TinyTIFF
lightweight TIFF reader/writer library (C/C++)
Stars: ✭ 91 (+152.78%)
Mutual labels:  lib
dotty dict
Dictionary wrapper for quick access to deeply nested keys.
Stars: ✭ 67 (+86.11%)
Mutual labels:  lib
jigjs
🧩 A front-end framework
Stars: ✭ 22 (-38.89%)
Mutual labels:  lib
faker
Faker is a Nim package that generates fake data for you.
Stars: ✭ 28 (-22.22%)
Mutual labels:  lib
TinyMAT
C/C++ library to handle writing simple Matlab(r) MAT file
Stars: ✭ 22 (-38.89%)
Mutual labels:  lib
dtkcore
Deepin Toolkit, core module
Stars: ✭ 45 (+25%)
Mutual labels:  lib
node-nightwatch-accessibility
Nightwatch.js utility assertion for accessibility testing with aXe
Stars: ✭ 16 (-55.56%)
Mutual labels:  lib
logger-node
A nodejs logger client for LogDNA
Stars: ✭ 27 (-25%)
Mutual labels:  lib
nimjson
nimjson generates nim object definitions from json documents.
Stars: ✭ 37 (+2.78%)
Mutual labels:  lib
react-lite
A simple implementation of react
Stars: ✭ 51 (+41.67%)
Mutual labels:  lib
CockyGrabber
C# library for the collection of browser information such as cookies, logins, and more
Stars: ✭ 46 (+27.78%)
Mutual labels:  lib
liblex
C library for Lexical Analysis
Stars: ✭ 25 (-30.56%)
Mutual labels:  lib
Assembly-Lib
A 16-bits x86 DOS Assembly library that provides many useful functions for developing programs. It has both VGA grapics functions as well as general purpose utilities. The main purpose of this library was to be able to implement simple DOS games (in Assembly) using VGA (320x200, 256 colors) display.
Stars: ✭ 36 (+0%)
Mutual labels:  lib
node-glob-promise
Promise version of glob
Stars: ✭ 43 (+19.44%)
Mutual labels:  lib
telegram-bot-api
This is an api-project for the telegram bot (HTTPS) api.
Stars: ✭ 16 (-55.56%)
Mutual labels:  lib
nimffmpeg
Nim FFMpeg binding
Stars: ✭ 29 (-19.44%)
Mutual labels:  lib

Python package for logging to LogDNA

All Contributors


Installation

$ pip install logdna

Setup

import logging
from logdna import LogDNAHandler
import os

# Set your key as an env variable
# then import here, its best not to
# hard code your key!
key=os.environ['INGESTION_KEY']

log = logging.getLogger('logdna')
log.setLevel(logging.INFO)

options = {
  'hostname': 'pytest',
  'ip': '10.0.1.1',
  'mac': 'C0:FF:EE:C0:FF:EE'
}

# Defaults to False; when True meta objects are searchable
options['index_meta'] = True

test = LogDNAHandler(key, options)

log.addHandler(test)

log.warning("Warning message", {'app': 'bloop'})
log.info("Info message")

Required

Optional

  • Hostname - (string)
  • MAC Address - (string)
  • IP Address - (string)
  • Index Meta - (bool) - formatted as options['index_meta']

Usage

After initial setup, logging is as easy as:

# Simplest use case
log.info('My Sample Log Line')

# Add a custom level
log.info('My Sample Log Line', { 'level': 'MyCustomLevel' })

# Include an App name with this specific log
log.info('My Sample Log Line', { 'level': 'Warn', 'app': 'myAppName'})

# Pass associated objects along as metadata
meta = {
    'foo': 'bar',
    'nested': {
        'nest1': 'nested text'
    }
}

opts = {
    'level': 'warn',
    'meta': meta
}

log.info('My Sample Log Line', opts)

Usage with fileConfig

To use LogDNAHandler with fileConfig (e.g., in a Django settings.py file):

import os
import logging
from logdna import LogDNAHandler #  required to register `logging.handlers.LogDNAHandler`

LOGGING = {
    # Other logging settings...
    'handlers': {
        'logdna': {
            'level': logging.DEBUG,
            'class': 'logging.handlers.LogDNAHandler',
            'key': os.environ.get('LOGDNA_INGESTION_KEY'),
            'options': {
                'app': '<app name>',
                'env': os.environ.get('ENVIRONMENT'),
                'index_meta': <True|False>,
            },
        },
    },
    'loggers': {
        '': {
            'handlers': ['logdna'],
            'level': logging.DEBUG
        },
    },
}

(This example assumes you have set environment variables for ENVIRONMENT and LOGDNA_INGESTION_KEY.)

API

LogDNAHandler(key: string, [options: dict])

key

  • Required
  • Type: string
  • Values: <your ingestion key>

The LogDNA API Key associated with your account.

options

app
  • Optional
  • Type: string
  • Default: ''
  • Values: <your custom app>

The default app named that is included in every every log line sent through this instance.

env
  • Optional
  • Type: string
  • Default: ''
  • Values: <your custom env>

The default env passed along with every log sent through this instance.

hostname
  • Optional
  • Type: string
  • Default: ''
  • Values: <your custom hostname>

The default hostname passed along with every log sent through this instance.

include_standard_meta
  • Optional
  • Type: bool
  • Default: False

Python LogRecord objects includes language-specific information that may be useful metadata in logs. Setting include_standard_meta to True automatically populates meta objects with name, pathname, and lineno from the LogRecord.

WARNING This option is deprecated and will be removed in the upcoming major release.

index_meta
  • Optional
  • Type: bool
  • Default: False

We allow meta objects to be passed with each line. By default these meta objects are stringified and not searchable, and are only displayed for informational purposes.

If this option is set to True then meta objects are parsed and searchable up to three levels deep. Any fields deeper than three levels are stringified and cannot be searched.

WARNING If this option is True, your metadata objects MUST have consistent types across all log messages or the metadata object might not be parsed properly.

level
  • Optional
  • Type: string
  • Default: Info
  • Values: Debug, Trace, Info, Warn, Error, Fatal, <your custom level>

The default level passed along with every log sent through this instance.

verbose
  • Optional
  • Type: string or bool
  • Default: True
  • Values: False or any level

Sets the verbosity of log statements for failures.

request_timeout
  • Optional
  • Type: int
  • Default: 30000

The amount of time (in ms) the request should wait for LogDNA to respond before timing out.

tags

List of tags used to dynamically group hosts. More information on tags is available at How Do I Use Host Tags?

url
  • Optional
  • Type: string
  • Default: 'https://logs.logdna.com/logs/ingest'

A custom ingestion endpoint to stream log lines into.

custom_fields
  • Optional
  • Type: list<string>
  • Default: ['args', 'name', 'pathname', 'lineno']

List of fields out of record object to include in the meta object. By default, args, name, pathname, and lineno will be included.

log(line, [options])

line

  • Required
  • Type: string
  • Default: ''

The log line to be sent to LogDNA.

options

level
  • Optional
  • Type: string
  • Default: Info
  • Values: Debug, Trace, Info, Warn, Error, Fatal, <your custom level>

The level passed along with this log line.

app
  • Optional
  • Type: string
  • Default: ''
  • Values: <your custom app>

The app passed along with this log line.

env
  • Optional
  • Type: string
  • Default: ''
  • Values: <your custom env>

The environment passed with this log line.

meta
  • Optional
  • Type: dict
  • Default: None

A standard dictonary containing additional metadata about the log line that is passed. Please ensure values are JSON serializable.

NOTE: Values that are not JSON serializable will be removed and the respective keys will be added to the __errors string.

index_meta
  • Optional
  • Type: bool
  • Default: False

We allow meta objects to be passed with each line. By default these meta objects will be stringified and will not be searchable, but will be displayed for informational purposes.

If this option is turned to true then meta objects will be parsed and will be searchable up to three levels deep. Any fields deeper than three levels will be stringified and cannot be searched.

WARNING When this option is true, your metadata objects across all types of log messages MUST have consistent types or the metadata object may not be parsed properly!

timestamp

The time in seconds since the epoch to use for the log timestamp. It must be within one day or current time - if it is not, it is ignored and time.time() is used in its place.

Development

This project makes use of the poetry package manager for local development.

$ poetry install

Scripts

lint Run linting rules w/o attempting to fix them

$ poetry run task lint

lint:fix

Run lint rules against all local python files and attempt to fix where possible.

$ poetry run task lint:fix

test:

Runs all unit tests and generates coverage reports

poetry run task test

Contributors

Thanks goes to these wonderful people (emoji key):


Muaz Siddiqui

💻 📖 ⚠️

Samir Musali

💻 📖 ⚠️

vilyapilya

💻 🚧 ⚠️

Mike Hu

📖

Eric Satterwhite

💻 📖 ⚠️ 🔧

Łukasz Bołdys (Lukasz Boldys)

💻 🐛

Ryan

📖

Mike Huang

💻 🐛

Dan Maas

💻

DChai

📖

Jakob de Maeyer

💻

Andrey Babak

💻

Mike S

💻 📖

Brennan Ashton

💻

Christian Hotz-Behofsits

💻 🐛

Kurtiss Hare

🐛

Alexey Kinev

🐛

matthiasfru

🐛

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MIT © LogDNA Copyright © 2017 LogDNA, released under an MIT license. See the LICENSE file and https://opensource.org/licenses/MIT

Happy Logging!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].