使用日志记录器层次结构的一般步骤:
import logging
logger = logging.getLogger('myapp')
logger.setLevel(logging.DEBUG)
# 设置根日志记录器的处理程序和格式
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
# script1.py
import logging
logger = logging.getLogger('myapp.script1')
def some_function():
logger.info("This is a log message from script1.py")
# script2.py
import logging
logger = logging.getLogger('myapp.script2')
def another_function():
logger.info("This is a log message from script2.py")
# main.py
import logging
# 配置根日志记录器
logging.basicConfig(level=logging.INFO, filename='app.log', filemode='w', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
from script1 import some_function
from script2 import another_function
def main():
some_function()
another_function()
if __name__ == "__main__":
main()
在上述示例中,根日志记录器的日志输出被配置为写入到文件app.log中,而子日志记录器的日志输出将继承根日志记录器的配置。
logger = logging.getLogger(‘myapp’):
创建一个名为’myapp’的日志记录器对象。日志记录器是用于记录日志消息的核心对象。
logger.setLevel(logging.DEBUG):
设置日志记录器的日志级别为DEBUG。这意味着只有DEBUG级别及以上的日志消息才会被记录。可以根据需要调整日志级别,例如DEBUG、INFO、WARNING、ERROR等级别。
handler = logging.StreamHandler():
创建一个处理程序对象,用于处理日志消息。在本例中,创建了一个StreamHandler对象,用于将日志消息输出到标准输出流(stdout)。
formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s %(message)s’):
创建一个格式化器对象,用于定义日志消息的输出格式。在本例中,使用了一个简单的格式,包括日志消息的时间、日志记录器的名称、日志级别和消息内容。
handler.setFormatter(formatter):
将格式化器对象设置到处理程序对象中。这样,在处理程序处理日志消息时,会应用定义的输出格式。
logger.addHandler(handler):
将处理程序对象添加到日志记录器中。通过添加处理程序,可以指定将日志消息发送到何处。在本例中,将日志消息发送到标准输出流(stdout)。