(Feb-15-2020, 02:54 AM)TheHacker707 Wrote: so that I can save it to a log or something. Is there a way to do that?
Can do it with logging module,look at this
post.
In that post i use
logging in standard library,you see i have to write boiler plate code and i import it with
import my_log
.
There is a easier way if using eg
Loguru.
No boiler plate code,if i use same function as in post.
from loguru import logger
logger.add("output.log", backtrace=True, diagnose=True)
def add(x, y):
try:
return(x + y)
except Exception as error:
logger.exception('msg')
if __name__ == '__main__':
add(5, '50')
Output:
λ cat output.log
2020-02-15 15:42:45.104 | ERROR | __main__:add:8 - msg
Traceback (most recent call last):
File "add_guru.py", line 11, in <module>
add(5, '50')
-> <function add at 0x033308A0>
> File "add_guru.py", line 6, in add
return(x + y)
| -> '50'
-> 5
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Loguru can also catch error even if not using
try:except
,bye using a decorator.
from loguru import logger
logger.add("file_1.log", rotation="5 MB")
@logger.catch
def add(x, y):
return(x + y)
if __name__ == '__main__':
add(5, '99')
Output:
λ cat file_1.log
2020-02-15 15:59:35.736 | ERROR | __main__:<module>:12 - An error has been caught in function '<module>', process 'MainProcess' (13600), thread 'MainThread' (10060):
Traceback (most recent call last):
> File "catch_guru.py", line 12, in <module>
add(5, '99')
-> <function add at 0x0320AF60>
File "catch_guru.py", line 9, in add
return(x + y)
| -> '99'
-> 5
TypeError: unsupported operand type(s) for +: 'int' and 'str'