Django开发中配置日志输出的方法
本文介绍在Django开发中配置日志输出的方法。通过对比自定义打印函数与Python内置logging模块,详细讲解如何配置日志等级、格式和路径,并展示使用logging.debug()输出信息的完整代码示例。
Django开发中的日志输出方法
在Django开发过程中,有效的日志输出对于调试和监控至关重要。本文将介绍如何在Django项目中配置日志输出,包括自定义函数和Python内置的logging模块。
开发环境说明
本文示例基于以下开发环境:
- 操作系统:Ubuntu 16.04
- Django版本:1.11.9
- Python版本:2.7
自定义日志函数
一种简单的日志输出方式是创建自定义函数。以下是一个将信息输出到指定文件的示例:
import time
def print_log(log):
file_obj = open('/tmp/filename.log', 'a+')
log_time = time.strftime(
'[%Y-%m-%d %H:%M:%S]',
time.localtime(
time.time())) # 转化时间格式
file_obj.write("%s\n" % (str(log)))
file_obj.close() # 记得close()虽然这种方法简单直接,但存在几个局限性:
- 自定义函数无法获取调用者的文件名和函数名
- 自定义函数无法获取调用者的具体代码行号
获取调用者信息
为了获取更详细的调用信息,可以使用sys和os模块。以下示例展示了如何获取文件名、函数名和行号:
import sys
import os
import time
def get_function_info():
print(os.path.basename(sys.argv[0]).split(".")[0]) #不带后缀的所在文件名 # 关于函数
print (os.path.basename(sys.argv[0]))
print (sys._getframe().f_code.co_filename)
print (sys._getframe().f_code.co_name)
print (sys._getframe().f_lineno)
get_function_info()结合这些信息,可以改进日志函数:
import sys
import os
import time
def get_function_info():
file_name = os.path.basename(sys.argv[0]).split(".")[0]
os.path.basename(sys.argv[0])
sys._getframe().f_code.co_filename
function_name = sys._getframe().f_code.co_name
function_num = sys._getframe().f_lineno
return file_name,function_name,function_num
def print_log(log):
file_obj = open('/tmp/filename.log', 'a+')
log_time = time.strftime(
'[%Y-%m-%d %H:%M:%S]',
time.localtime(
time.time()))
file_name,function_name, function_num= get_function_info()
file_obj.write("%s %s %s [line:%s] log %s\n" % (log_time,file_name, function_name,function_num,str(log)))
file_obj.close()
使用logging模块
Python内置的logging模块提供了更强大的日志功能。以下配置示例展示了如何设置日志等级、格式和路径:
import logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='/tmp/filename.log',
filemode='a')配置完成后,可以使用logging.debug()输出所有级别的信息:
import logging
logging.debug(log)日志级别说明
logging模块提供了多个日志级别,按严重程度排序如下:
- critical:严重错误
- error:错误
- warning:警告
- info:信息
- debug:调试
在日志格式中,可以使用以下占位符:
- %(filename)s:调用日志函数的模块文件名
- %(asctime)s:字符串形式的当前时间
- %(lineno)d:调用日志语句所在的代码行
- %(levelname)s:文本形式的日志级别
以上就是Django开发中配置日志输出的详细内容,更多关于Django日志配置的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









