Python advanced print with varnames.
Project description
LK Logger
Advanced print tool for Python.
Features:
-
Show source map, function name and varnames in printing.
-
Easy to start. Just add two lines code to enable lk-logger.
# add this import lk_logger lk_logger.setup() # then remain using `print` as usual... print('Hello world') print(123, 456, 789) ...
It will replace Python's built-in
print
function to take care all the leftovers. -
Simple to write:
# before a, b = 1, 2 print('a = {}, b = {}, a + b = {}'.format(a, b, a + b)) # after print(a, b, a + b)
(Another example)
-
Non-intrusive. After enable it like above, no more modifications on your source code projects (it is low-cost and low-effort to migrate). You will see the new effects at once.
This would be a good choice for developers who have dived into their projects with Python
print
to get a new start with a new logging util. -
Code highlight.
Install
pip install lk-logger
The latest version is 5.0.0 or higher.
Quick Start
import lk_logger
lk_logger.setup(show_varnames=True)
print('hello world')
a, b = 1, 2
print(a, b, a + b)
print(a, b, (c := a + b), c + 3)
Screenshot:
Advanced Usage
Usually, the above example is enough to use.
The advanced feature is "markup" shorthand.
Use a markup as in the first or the last parameter, the markup is a string that starts with ':', consists of multiple marks.
For example:
print(':i', 'monday')
print(':i', 'tuesday')
print(':i', 'wednesday')
It prints weekdays with a numeric prefix:
Another one:
import lk_logger
lk_logger.setup()
print('this is a divider', ':d')
print(':v0', 'this is a TRACE message')
print(':v1', 'this is a DEBUG message')
print(':v2', 'this is a INFO message')
print(':v3', 'this is a WARN message')
print(':v4', 'this is a ERROR message')
print(':v5', 'this is a FATAL message')
Here is a list of all available marks:
Mark | Description |
---|---|
:d |
divider line |
:i |
index |
:l |
long / loose format (multiple lines) |
:p |
parent layer |
:r |
rich format |
:s |
short / single line format |
:t |
timestamp (not available in current version) |
:v |
verbosity / log level |
Markup options:
:d0 default divider line (default)
:d1+ user defined (if not, fallback to :d0)
:i0 reset index
:i1 number width fixed to 1 (1, 2, 3, ... 9, 10, 11, ...) (default)
:i2 number width fixed to 2 (01, 02, 03, ..., 99, 100, 101, ...)
:i3 number width fixed to 3 (001, 002, 003, ..., 999, 1000, 1001, ...)
:i4+ number width fixed to *
:i9+ reserved, not defined yet (will be fallback to :i1)
:l0 let lk-logger decides how to format long message (default)
:l1 force expand all nodes
:p0 self layer
:p1 parent layer (default)
:p2 grand parent layer
:p3 great grand parent layer
:p4 great great grand parent layer
:p5+ great great great ... grand parent layer
note: be careful using :p2+, it may crash if the layer not exists
:v0 trace
if you don't like using number, you can use an alias :vT
(:vT is not supported in current version. we'll bring it soon)
:v1 debug (alias is :vD) (default)
:v2 info (alias is :vI)
:v3 warning (alias is :vW)
:v4 error (alias is :vE)
:v5 fatal (alias is :vF)
:v6+ user defined (if not, fallback to :v0)
Detailed examples:
See examples/02_all_markup_usages.py.
Screenshot:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for lk_logger-5.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cad0401d28f00f7ad63580d3eaa1031bb3d1bb2a848c22147e2520f0e5d0972b |
|
MD5 | 02a63402cc708e92f2e05ed5886e4f65 |
|
BLAKE2b-256 | 5589aa05b934b26012933dbb8ae4c87c3a21a1dfdb901c1874a8d17d5f6f220e |