扩展阅读:
Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解
现在有下面的Python代码:
# -*- coding: utf-8 -*-def log_out_test(content_out):print(content_out)content1 = "i love you01"
log_out_test(content1)
现在要把函数log_out_test()中的print语句中的内容以日志文件的形式输出:
可以像下面这样实现:
# -*- coding: utf-8 -*-import loggingdef log_out_test(content_out):logger01.debug(content_out)# 创建新的日志记录器
logger01 = logging.getLogger("my_logger")# 配置日志记录器的日志文件路径和日志格式
file_handler_01 = logging.FileHandler('E:/log/my_log_file_01.log')
file_formatter_01 = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler_01.setFormatter(file_formatter_01)
logger01.addHandler(file_handler_01)# 设置日志级别
logger01.setLevel(logging.DEBUG)# 使用新的日志记录器进行调试
content = "i love you"
log_out_test(content)
对于上面的代码,如果认真读过我的另一篇博文:Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解 那么理解起来应该是没有问题。
不过这里还是补充说明一点:
问:为什么在函数log_out_test()的外部的实例化对象logger01并没有通过参数传递到函数,在函数内部也可以调用?
答:在 Python 中,logging
模块使用了全局状态(global state),因此,在代码中,logger01
实例化后成为一个全局变量。全局变量在整个模块中都是可见的,因此你可以在模块的任何地方访问它。
运行上面的代码后:
在路径E:\log\
下生成了日志文件:my_log_file_01.log
内容如下:
我们修改下变量content的内容为"i love you02",再次运行上面的代码,发现原来的日志文件并没有被覆盖,而是被追加到了后面。如下图所示:
扩展阅读:
Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解