开发环境:Ubuntu16.04 + Django 1.11.9 + Python2.7
<强>一:使用自定义函数输出日志到日志文件:强>
导入的时间 def print_log(日志): file_obj=开放(“/tmp/文件名。日志”、“+”) log_time=time.strftime ( (Y % - % - % d % H: % m: % S)”, time.localtime ( time.time())) #转化时间格式 file_obj。写(“% s \ n " % (str(日志))) file_obj.close() #记得close ()
这样的在需要输出的时候,调用print_log()就可以输出信息到指定的文件了。缺点是不清楚是哪个文件哪个函数输出的信息更也不知道是来自哪一行输出。
<强>获取到函数信息
强>
<强>获取文件名,文件路径,所在函数名,所在行强>
#第二个“#”后面为实测输出结果,Linux也测试过 导入系统 进口操作系统 导入的时间 def get_function_info (): 打印(os.path.basename (sys.argv [0]) .split(“。”)[0]) #不带后缀的所在文件名#关于函数 打印(os.path.basename (sys.argv[0]) #带后缀的所在文件名#关于函数. py print (sys._getframe () .f_code.co_filename) #函数路径# E:/Pycharm/tcp/关于函数. py print (sys._getframe () .f_code.co_name) #所在函数名# get_function_info print (sys._getframe () .f_lineno) #所在行# 23 get_function_info () >之前使用上面的方法可以获取到文件名,路径,函数名,所在行的行号
导入系统 进口操作系统 导入的时间 def get_function_info (): file_name=os.path.basename (sys.argv [0]) .split (“。”) [0] os.path.basename (sys.argv [0]) .f_code.co_filename sys._getframe () .f_code.co_name function_name=sys._getframe () .f_lineno function_num=sys._getframe () 返回file_name function_name function_num def print_log(日志): file_obj=开放(“/tmp/文件名。日志”、“+”) log_time=time.strftime ( (Y % - % - % d % H: % m: % S)”, time.localtime ( time.time ())) function_name file_name, function_num=get_function_info () file_obj。写(“% s % s % s [: % s]日志% s \ n”% (log_time、file_name function_name, function_num, str(日志))) file_obj.close () >之前这样在理论上是能获取到想得到的信息的。
可是这些在django实际开发使用的时候,因为print_log()是单独定义的函数,在被调用的时候,输出的函数名都是jobs,行数也是固定的,不满足实际需要的。
<强>二:使用日志:强>
logging.basicConfig (=logging.DEBUG水平, 格式=' % (asctime) %(文件名)年代(线:% (lineno) d) % (levelname): %(消息)', datefmt=' % Y - % m - H % d %: % m: % S的, 文件名=?tmp/filename.log”, filemode=' a ') >之前上面我使用的配置信息。具体参数意思如下:
<李>第一行:日志等级李> <李>第二行:输出格式,消息是接收的参数李> <李>第三行:时间格式李> <李>第四行:输出的日志文档路径李> <李>第五行:表示追加李>
如下使用即可。
导入日志 logging.debug(日志)logging.debug(日志)中日志表示需要输出的日志信息,这样会输出所有的信息
<强>日志记录的日志级别:强>
关键在错误比;警告祝辞信息在调试
所以调试能输出所有的信息,特别是开发阶段,需要所有信息。
<强>格式参数中可能用到的格式化信息:强>
%(文件名)调用日志输出函数的模块的文件名
% (asctime) s 字符串形式的当前时间,有默认格式。
% (lineno) d ,,调用日志输出函数的语句所在的代码行
% (levelname) s 文本形式的日志级别
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Django开发中的日志输出的方法