logging模块

Posted gjx1212

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logging模块相关的知识,希望对你有一定的参考价值。

一.用于日志的书写

默认情况下,Python的logging模块输出到标准输出上,级别比warning大的才会输出,

默认日志级别设置为WARNING(日志级别等级critical> error>warning>info>defout>notest)

 两个方法:

  logger=logging.getLogger(logger对象名)返回一个logger对象名字默认为root

  logger.setLevel(logging.级别)设置logger的日志级别

  logger.addHandler(logger对象)添加logger对象到logger中

一些参数:

  filename:用指定的文件名创建FileHander,日志会被存储到文件中

  filemod:指定文件的打开方式,默认为“a”

  format:指定handler的日志显示格式

  datefmt:指定日期显示格式

  level:设置rootlogger的日志级别

  stream:用指定的stream创建StreamHandler,可以指定输出到sys.stderr,sys.stdout或者文件

format参数:

  %(name)s logger的名字

  %(levelno)s数字形式的日志级别

 

import  logging
logging. basic Config( level=logging.DEBUG,
                                       format=%(asctime)s%(filename)s %[line:%(lineno)d]s   %(levelname)s %(massage)s
                                         datefmt=%a  %d    %b  %y  %H:%M:%S#这是对时间格式的设置
                                        filename=test.txt#是对输出文件的名字,可以是绝对路径
                                        filemod=a#文件的模式,默认为a模式)


logging. debug(debug  massage)
logging. info(info  massage)
logging. warning(warning   massage)
logging. error(error  massage)
logging. critical( critical  massage)

 

import    logging
logger=logging.getLogger()
fh = logging.FileHandler(test.log)#创建一个handler,用于写入日志文件
ch = logging.StreamHandler()#创建一个handler,用于输出到控制台
formatter = logging.Formatter(%(asctime)s-%(name)s-%(levelname)s-%(massage)s)
fh.setFormatter(formatter)
ch.Formatter(formatter)
logger.setLevel(logging.DEBUG)
logger.debug(logger debug massage)
logger.info(logger info massage)

写一个函数用于logging模块,以后调用只需要调用该函数

import os
import time
import logging
from config import settings
def get_logger(card_num,struct_time):
    if struct_time.tm_mday<23:
        file_name = "%s_%s_%d"%
(struct_time.tm_year,struct_time.tm_mon,22)
    
    else:
        file_name = "%s_%s_%d"(struct_time.tm_year,struct_time.tm_mon+1,22)
    file_handler=logging.FileHandler(
           os.path.join(setting.USER_DIR_FOLDER,card_num,record,file_name)
        encoding=utf-8
)    
    fmt = logging.Formatter(fmt="%(asctime)s : %(massage)s")
    file_handler.setFormatter(fmt)
    logger1=logging.Logger(user_logger,level=logging.INFO)
    odder1.addHandler(file_name)
    return logger1

 

以上是关于logging模块的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

python常用代码片段总结

前端开发常用js代码片段

vs code 自定义代码片段

如何有条件地将 C 代码片段编译到我的 Perl 模块?