1. logging level级别介绍
在编写代码时,我们通常需要在代码中留下一些记录,以协助我们查找和修复错误。而 logging 模块为我们提供了一种方便的方式,能够在代码中添加日志语句,以便在程序运行时追踪问题。
当我们使用 logging 模块时,可以设置一个日志级别,来控制哪些信息会被记录下来,哪些信息被过滤掉。下面将介绍一些常用的日志级别。
1.1 DEBUG级别
DEBUG 是最详细的日志级别,通常只有在调试时才会使用。它会记录详细的信息,如变量的值、函数的调用等。如果我们在程序中设置了 DEBUG 级别,那么除非我们明确指定只打印指定级别以及更高级别的信息,否则程序中所有级别的信息都会被打印出来。
import logging
logging.basicConfig(level=logging.DEBUG)
def foo():
logging.debug('Enter foo()')
logging.info('Input: {}'.format(1))
logging.warning('This is a warning!')
logging.error('This is an error!')
logging.critical('This is critical!')
上面的示例中,我们设置了 DEBUG 级别,并在函数中添加了各级别的日志信息。当我们运行程序时,会打印出所有级别的信息:
Enter foo()
Input: 1
This is a warning!
This is an error!
This is critical!
可以看到,所有级别的信息都被打印到了控制台。
1.2 INFO级别
INFO 级别是默认的日志记录级别,通常用来记录程序正常运行时的信息。如果我们设置了 INFO 级别,那么 debug 级别的信息将被忽略,只有 INFO、WARNING、ERROR、CRITICAL 级别的信息才会被记录下来。
import logging
logging.basicConfig(level=logging.INFO)
def foo():
logging.debug('Enter foo()')
logging.info('Input: {}'.format(1))
logging.warning('This is a warning!')
logging.error('This is an error!')
logging.critical('This is critical!')
在上面的代码中,我们设置了 INFO 级别,并添加了各级别的日志信息。当我们运行程序时,会打印出 INFO、WARNING、ERROR、CRITICAL 级别的日志信息:
Input: 1
This is a warning!
This is an error!
This is critical!
可以看到,只有 INFO 级别及以上的信息被打印出来。
1.3 WARNING级别
WARNING 级别通常用来记录某些意外但不是严重错误的信息。如果我们设置了 WARNING 级别,那么仅有WARNING、ERROR、CRITICAL级别的信息才会被记录下来。
import logging
logging.basicConfig(level=logging.WARNING)
def foo():
logging.debug('Enter foo()')
logging.info('Input: {}'.format(1))
logging.warning('This is a warning!')
logging.error('This is an error!')
logging.critical('This is critical!')
在上面的代码中,我们设置了 WARNING 级别,并添加了各级别的日志信息。当我们运行程序时,会只打印出 WARNING、ERROR、CRITICAL 级别的信息:
This is a warning!
This is an error!
This is critical!
可以看到,只有 WARNING 级别及以上的信息被打印出来。
1.4 ERROR级别
ERROR 级别用于记录错误信息。如果我们设置了 ERROR 级别,那么仅有 ERROR 和 CRITICAL 级别的信息才会被记录下来。
import logging
logging.basicConfig(level=logging.ERROR)
def foo():
logging.debug('Enter foo()')
logging.info('Input: {}'.format(1))
logging.warning('This is a warning!')
logging.error('This is an error!')
logging.critical('This is critical!')
在上面的代码中,我们设置了 ERROR 级别,并添加了各级别的日志信息。当我们运行程序时,会只打印出 ERROR 和 CRITICAL 级别的信息:
This is an error!
This is critical!
可以看到,只有 ERROR 级别及以上的信息被打印出来。
1.5 CRITICAL级别
CRITICAL 级别用于记录严重错误信息。如果我们设置了 CRITICAL 级别,那么仅有 CRITICAL 级别的信息才会被记录下来。
import logging
logging.basicConfig(level=logging.CRITICAL)
def foo():
logging.debug('Enter foo()')
logging.info('Input: {}'.format(1))
logging.warning('This is a warning!')
logging.error('This is an error!')
logging.critical('This is critical!')
在上面的代码中,我们设置了 CRITICAL 级别,并添加了各级别的日志信息。当我们运行程序时,会只打印出 CRITICAL 级别的信息:
This is critical!
可以看到,只有 CRITICAL 级别的信息被打印出来。
2. 总结
在编写代码时,不仅要考虑实现功能,也要考虑如何调试和追踪问题。日志功能便是解决这个问题的一种方式。无论您是想记录调用链、提示用户某种操作需要调整,还是发现异常,都可以使用日志来追踪您的应用。
本文介绍了常用的几种日志级别:DEBUG、INFO、WARNING、ERROR、CRITICAL。正确地设置日志级别,不仅可以帮助您更好地理解应用程序运行时发生了什么,而且还可以减少不必要的日志信息和存储空间。