logging模块

Posted whylinux

tags:

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

# logging模块
    # 日志模块


# 日志
    # 日志用来记录用户行为的,有没有错都要记录下来
    # 或者记录代码的执行过程的时候,我们需要记录下来
    # 排错的时候需要打印很多细节来帮助我们排错时,我们需要记录下来
    # 严重的错误应该记录下来



# 在logging模块中有5个级别, 默认只输出info以上的级别不包括info级别
# import logging
# logging.debug(‘debug message‘)  # 低级别   排错信息
# logging.info(‘info message‘)    # 正常的信息
# logging.warning(‘warning message‘)  # 警告嘻嘻
# logging.error(‘error message‘)  # 错误信息
# logging.critical(‘critical message‘)    # 高级别   # 严重错误信息


# 可以通过配置的方式使logging日志输出的信息更好看
    # 两种配置日志的方式
        # basicconfig 用法简单,能做的事情相对少
            # 缺点
                # 记录到日志文件中时,解决不了中文的乱码问题
                # 不能同时往文件和屏幕上输出
        # 配置log对象  用户比较复杂,能做的事情相对多

# 配置日志logging, level=loggin.DEBUG,配置debug级别以上的信息都输出。 NOTSET = 0为最低
    # format,格式化,asctime 是时间,对应datefmt。 filename是文件名字,对应filename。lineo是多少行。levelname是等级。message是信息内容
#
# import logging
# print(‘%(key)s‘ % {‘key‘ : ‘value‘})    # value
# logging.basicConfig(level = logging.DEBUG,
#                     format = ‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘,
#                     datefmt = ‘%a, %d %b %Y %H:%M:%S‘,
#                     filename = ‘test.log‘,
#                     filemode = ‘a‘)
#
# logging.debug(‘debug message‘)  # 低级别   排错信息
# logging.info(‘info message‘)    # 正常的信息
# logging.warning(‘warning message‘)  # 警告嘻嘻
# logging.error(‘error message‘)  # 错误信息
# logging.critical(‘critical message‘)    # 高级别,基于操作系统级别的信息了   # 严重错误信息
#
# # 例,输入值错误,异常处理后,将错误输出到日志中
# try:
#     int(input(‘num >>>‘))
# except ValueError:
#     logging.error(‘input ValueError‘)

# basicConfig缺点
    # 记录到日志文件中时,解决不了中文的乱码问题
    # 不能同时往文件和屏幕上输出
    # 所以一般不用logging中的basicConfig来记录日志


# 此种日志为灵活,充分解耦,比较常用
import logging
logger = logging.getLogger()    # 创建一个logger对象

# 创建一个handler,用于写入日志文件
fh = logging.FileHandler(test2.log, encoding=utf-8) # 创建一个文件描述符

# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()    # 在创建一个控制台的文件秒速福
formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s[line:%(lineno)d] -%(message)s)   # 设置输出格式化的格式

#formatter = logging.Formatter(‘%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s‘,
 #                   datefmt = ‘%a, %d %b %Y %H:%M:%S‘)
fh.setLevel(logging.DEBUG)  # 设置输出等级

# 文件操作符和格式关联
fh.setFormatter(formatter)  # 设置日志文件(文件描述符)为该格式输出
ch.setFormatter(formatter)  # 设置控制台(文件描述符)为该格式输出

# logger对象和文件操作符关联绑定
logger.addHandler(fh)   # logger对象可以添加多个fh和ch对象   将日志操作符绑定到logger中
logger.addHandler(ch)   #   将控制台操作符绑定到logger中

logger.debug(logger debug message)
logger.info(logger info message)
logger.warning(logger warning message)
logger.error(logger error message)
logger.critical(logger critical message)


# 例,输入值错误,异常处理后,将错误输出到日志中
try:
    int(input(num >>>))
except ValueError:
    logger.error(input ValueError)






# zabbix 比较好的监控系统

技术分享图片

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

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

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

python常用代码片段总结

前端开发常用js代码片段

vs code 自定义代码片段

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