Skip to main content

easy log use for extra infos

Project description

logz

easy use for log with extra infos

Features

  • very easy to use
  • log file name change from date
  • DayRottingLogger
  • log to email
  • safe extra fields
  • log multi vars and not just str
  • multiline log and indent for json
  • debug as default level

Install

$ pip install logz

Use

Simple Use

from logz import log
log.debug('debug msg')
log.info('info msg')
log.warning('warning msg')
log.error('error msg')
log.critical('critical mst')
try:
    assert 0
except AttributeError as ex:
    log.exception(ex)

output:

2019-12-12 22:39:43,584 DEBUG debug msg
2019-12-12 22:39:43,584 INFO info msg
2019-12-12 22:39:43,584 WARNING warning msg
2019-12-12 22:39:43,585 ERROR error msg
2019-12-12 22:39:43,585 CRITICAL critical mst
Traceback (most recent call last):
  File "/Users/apple/Documents/Projects/logz/logz/__init__.py", line 199, in <module>
    assert 0
AssertionError

log multi vars one time

a = 'hello'
b = 1
c = [2]
d = {'name': 'kevin'}
log.info(a,b,c,d)

output:

2019-12-12 22:40:20,221 INFO hello 1 [2] {'name': 'kevin'}

Note: Change args form supporting %s format to supporting multi vars if you want to use something like:

import logging
logging.info('name=%s,age=%d', 'kevin',18)

you neet use like below:

from logz import log
log.info('name=%s,age=%d' % ('kevin',18))

output:

2019-12-12 22:41:58,024 INFO name=kevin,age=18

log to file

from logz import log
log.file='logs/project.log'

Note: logs directory must be exists

By default it's a rotting file and maxBytes=10240 and backUps=5

log to a file with name changes with date

from logz import log
log.file='logs/%Y-%m-%d.log'

And it's a day rotting file

log to email

from logz import log
log.email = dict(host="smtp.sina.com", user='test_results@sina.com', password='***',
                    receivers=['superhin@126.com'], capacity=10)

for i in range(20):
    log.error('这个是个错误日志')

change log level

log.level = 'info'
log.level = 20
log.debug('not show')
log.info('show info')

output:

2019-12-12 22:43:24,479 INFO show info

level string is not case sensitive

change log format

log.format = '%(asctime)s %(levelname)s %(name)s %(message)s'

with extra fields

log.format = '%(asctime)s %(levelname)s %(user)s %(message)s'
log.info('hello with no user')
log.info('hello with kevin', extra={'user': 'kevin'})

output:

2019-12-12 22:45:18,604 INFO None hello with no user
2019-12-12 22:45:18,604 INFO kevin hello with kevin

multiline and indent for dict

from logz import log
log.info({'foo': 'bar'}, indent=2)

output:

2019-12-09 19:30:16,419 DEBUG log None ->
{
  "foo": "bar"
}

user logit

from logz import logit

@logit
def add(a, b):
    return a+b

def calc():
    add(1, 20)

calc()

output:

2020-06-30 12:39:06,124 DEBUG calc -> add(1,20) return: 21 duration: 0.017280101776123047s

todo

  • log file to config maxBytes or else
  • log to html
  • log to db
  • log diff
  • log assert
  • log print
  • log to server using websocket
  • more decorators such as @explain @exception @timeit @email
  • support verbosity

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for logz, version 0.15
Filename, size File type Python version Upload date Hashes
Filename, size logz-0.15.tar.gz (6.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page