Simple Logging Utility
Simple log utility for lazy you.
Get started
Get a logger:
from neetbox.logging import logger
say hello:
world = "world"
logger.log("hello", world)
output:
2023-03-18-13:56:03 > test.py > hello world
Using a decorator
@logger.mention
will mention the decorated function on each call.
@logger.mention
def function_a():
print('message from a')
def function_b():
function_a()
print('message from b')
def function_c():
function_a()
function_b()
print('message from c')
function_c()
output:
2023-11-18-06:26:04 > main/function_c > Currently running: function_a
message from a
2023-11-18-06:26:04 > main/function_b > Currently running: function_a
message from a
message from b
message from c
Auto tracing
The default logger
automatically trace back the caller of logger instance.
from neetbox.logging import logger
class AClass():
def __init__(self) -> None:
logger.log("Class A Ready.")
self.post_processing()
def post_processing(self):
logger.log("Running PostProcessing...")
def get_instance_of_A():
logger.log("Buidling AClass Instance...")
return AClass()
a = get_instance_of_A()
output:
2023-03-18-13:57:47 > test.py/get_instance_of_A > Buidling AClass Instance...
2023-03-18-13:57:47 > AClass/__init__ > Class A Ready.
2023-03-18-13:57:47 > AClass/post_processing > Running PostProcessing...
if you want to specify the identity, try logger(whom)
:
from neetbox.logging import logger
logger = logger(whom="identity name")
logger.log("some message")
output:
2023-03-18-13:58:40 > identity name > some message
Log into files
from neetbox.logging import logger
logger.set_log_dir("./logdir")
logger.log("this message will be written to both stdout and file")
logger.log("this message will be written to stdout only", into_file=False)
output:
[INFO]2023-03-18-14:29:59 > neetbox.logging.logger/Logger/info > Directory ./logdir not found, trying to create.
2023-03-18-14:29:59 > test.py > this message will be written to both stdout and file
2023-03-18-14:29:59 > test.py > this message will be written to stdout only
in ./logdir/2023-03-18.log
:
2023-03-18-14:29:59 | test.py | this message will be written to both stdout and file
caution
If you are creating a logger using the Logger constructor, notice that what you create is a new instance of the Logger
class and it would not share file writers with the others. See Who Is Logging? for more information.
Options using logger.log
If you want to log without datetime, try:
logger.log("some message", with_datetime=False)
output:
test.py > some message
The same thing, if you want to log without identifier:
logger.log("some message", with_identifier=False)
output:
2023-03-18-14:44:22 > some message
Looking for advanced format control? See advanced logging format