Pop-Up Thingie
Sidebar
>>> Magnum BBS <<<
Home
Forum
Files
Dark
Log in
Username
Password
Sidebar
Forum
Usenet
COMP.LANG.PYTHON
from my lab 3
From
Stefan Ram
@21:1/5 to
All
on Fri Feb 10 14:31:11 2023
main.py
import logging
logging.getLogger().setLevel( logging.DEBUG )
class log_class:
def __init__( self ):
self.depth = 0
def wrap( self, func ):
def wrap( *args, **kwargs ):
self.info( 'starting ' + func.__name__ )
self.depth += 1
result = func( *args, **kwargs )
self.info( 'ending ' + func.__name__ )
self.depth -= 1
return result
return wrap
def info( self, text ):
logging.info( ' ' * self.depth + text )
log = log_class()
@log.wrap
def factorial( n ):
log.info( f'{n = }' )
return n * factorial( n - 1 ) if n else 1
factorial( 2 )
output
INFO:root:starting factorial
INFO:root: n = 2
INFO:root: starting factorial
INFO:root: n = 1
INFO:root: starting factorial
INFO:root: n = 0
INFO:root: ending factorial
INFO:root: ending factorial
INFO:root: ending factorial
previous "from my lab" posts
Adding "start" and "end" methods to a logger
1 How a function can get its own name
2 Logging function entry and exit
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
Who's Online
System Info
Sysop:
Keyop
Location:
Huddersfield, West Yorkshire, UK
Users:
715
Nodes:
16 (
2
/
14
)
Uptime:
155:16:36
Calls:
12,092
Files:
15,000
Messages:
6,517,699