nanolog
Life is too short. Use nanolog
to make logging and printing simpler!
nanolog
features a convenient logger API built on top of python's builtin logging
.
The library also ships with many printing utilities. Python 3 only.
Installation
From stable package on PyPI
pip install nanolog
From bleeding edge master branch
pip install git+git://github.com/SurrealAI/nanolog.git
nanolog.Logger
import nanolog as nl
logger = nl.Logger.create_logger(
'main',
stream='out',
level='debug',
)
logger.info('my', 3, 'world', 1/16.) # just like print
# >>> my 3 world 0.0625
logger.warningfmt('{}, we are {:.3f} miles from {planet}',
'Houston', 17/7, planet='Mars') # just like str.format
# >>> Houston, we are 2.429 miles from Mars
Use a trailing number to indicate level, the larger the higher priority
logger.info7(...) # info level 7
logger.errorfmt8(...) # error level 8
Display a banner line or block
logger.infobanner3('my', 3, 'world', symbol='!', banner_len=16, banner_lines=3)
prints:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!! my 3 world !!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Of course, banner method also comes with a str.format
version
logger.debugbannerfmt(
'{3}&{0}&{2}&{1}', 'a', 'b', 'c', 'd',
symbol='<*_*>', banner_len=16, banner_lines=6
)
displays:
<*_*><*_*><*_*><*_*><*_*>
<*_*><*_*><*_*><*_*><*_*>
<*_*><*_ d&a&c&b <*_*><*_
<*_*><*_*><*_*><*_*><*_*>
<*_*><*_*><*_*><*_*><*_*>
<*_*><*_*><*_*><*_*><*_*>
Prettyprint support (uses the thirdparty lib prettyprinter
)
logger.infopp7(...)
logger.warningppfmt('my warning {:.3f} format {:.2f} string', 1/7., 1/9.)
Logger config
TODO
Time formatting
TODO
Printing utililites
prettyprint
Better alternatives for the pprint
module in python standard lib.
-
pprint
: takes variable number of objects, just likeprint()
-
pprintstr
: return string instead of printing to IO stream -
pprintfmt
: just likeprint('...'.format)
-
pprintfmtstr
: return string instead of printing to IO stream
Convenient aliases (pp
stands for prettyprint
; a single p
means normal print)
short | original |
---|---|
pf |
printfmt |
pferr |
printfmterr |
pstr |
printstr |
perr |
printerr |
pp |
pprint |
ppstr |
pprintstr |
ppf |
pprintfmt |
ppfstr |
pprintfmtstr |
TODO: talk about global configs
Print redirection context managers
- PrintRedirection
- PrintFile
- PrintSuppress
- PrintString