Class Based Logger for Python
pip install tdloggingA config text file for TDLogger
exceptionlog exceptionscountlog counttimelog time elapsedreturnlog return valueexeclog allpollwhether to poll for tdlogger.txt changespoll_periodseconds between each poll
Python Class
__init__
Constructor
file_pathpath of tdlogger.txtconfigcustom config in python dict that overrides tdlogger.txtaliasa name for your logger
.config()
Get the Logger decorator from its Configuration
Python Function
Parameters
target_dirDirectory that is affectedimport_rootPython import name of your tdlogger instancevar_nameVariable name of the TDLogger instance in your fileforceWhether to ignore applying at the current file levelverboseWhether to log changes
DANGEROUS, use with caution
Apply decorators to every python file in the Directory, and also marking the file
Python Function
Parameters
target_dirDirectory that is affectedimport_rootPython import name of your tdlogger instancevar_nameVariable name of the TDLogger instance in your fileforceApply Changes without confirmationverboseWhether to log changes
DANGEROUS, use with caution
Remove decorators to every python file in the Directory, and also removing the mark headings
📦example
┣ 📂cool
┃ ┣ 📂cooler
┃ ┃ ┣ 📜sleep.py
┃ ┃ ┗ 📜__init__.py
┃ ┣ 📜fib.py
┃ ┗ 📜__init__.py
┣ 📜logger_instance.py
┣ 📜playground.py
┣ 📜tdlogger.txt
┗ 📜__init__.py
# example/tdlogger.txt
exception = False
count = False
exec = True
time = False
return = False
poll = False
poll_period = 5
# example/cool/fib.py
class Fib:
@staticmethod
def get_n(n):
a = 0
b = 1
if n == 0:
return a
elif n == 1:
return b
else:
for i in range(2, n):
c = a + b
a = b
b = c
return b# example/cool/cooler/sleep.py
import time
class Sleep:
@staticmethod
def sleep(n):
time.sleep(n)# example/logger_instance.py
from tdlogging.tdlogger import TDLogger
logger = TDLogger(alias="My Custom Logger").config()# example/playground.py
from tdlogging.tdlogger import ApplyDecorators, RemoveDecorators
ApplyDecorators(target_dir="cool", import_root="example.logger_instance", var_name="logger", force=True)
for i in range(12):
from example.cool.cooler.sleep import Sleep
from example.cool.fib import Fib
print(Fib.get_n(i))
Sleep.sleep(1)
RemoveDecorators(target_dir="cool", import_root="example.logger_instance", var_name="logger", force=True)> python example/playground.py
Added 6 lines to 2 file(s) .
┎────────────────────────────┒
┃ --Method Execution-- ┃
┃ Alias: My Custom Logger ┃
┃ Class: Fib ┃
┃ Method: get_n ┃
┃ Count: 1 ┃
┃ Exec Time: 0.000s ┃
┃ Return Value: 0 ┃
┃ Return Type: <class 'int'> ┃
┃ Arguments: { ┃
┃ 'n': 0 ┃
┃ } ┃
┃ tdlogger ┃
┖────────────────────────────┚
0
┎─────────────────────────────────┒
┃ --Method Execution-- ┃
┃ Alias: My Custom Logger ┃
┃ Class: Sleep ┃
┃ Method: sleep ┃
┃ Count: 1 ┃
┃ Exec Time: 1.001s ┃
┃ Return Value: None ┃
┃ Return Type: <class 'NoneType'> ┃
┃ Arguments: { ┃
┃ 'n': 1 ┃
┃ } ┃
┃ tdlogger ┃
┖─────────────────────────────────┚
3
.
.
.
┎─────────────────────────────────┒
┃ --Method Execution-- ┃
┃ Alias: My Custom Logger ┃
┃ Class: Sleep ┃
┃ Method: sleep ┃
┃ Count: 12 ┃
┃ Exec Time: 1.000s ┃
┃ Return Value: None ┃
┃ Return Type: <class 'NoneType'> ┃
┃ Arguments: { ┃
┃ 'n': 1 ┃
┃ } ┃
┃ tdlogger ┃
┖─────────────────────────────────┚
Removed 6 lines from 2 file(s) .
Process finished with exit code 0