美文网首页
logging日志使用

logging日志使用

作者: 刹那的既视感 | 来源:发表于2019-03-21 12:53 被阅读0次

日志的等级

import logging
# 日志的五个等级,等级依次递增
# 默认是WARNING等级
logging.DEBUG
logging.INFO
logging.WARNING
logging.ERROR
logging.CRITICAL
# 设置日志等级
logging.basicConfig(level=logging.INFO)
# 使用
logging.debug('DEBUG')
logging.info('INFO')
logging.warning('WARNING')
logging.error('ERROR')
logging.critical('CRITICAL')

捕获异常信息到日志。这里主要需要进行捕获异常才能记录下完整的异常信息

try:
    raise Exception("异常")
except Exception as e:
    logging.exception(e)

日志的输出格式 对于日志的输出格式,我们能够进行自定义,包括输出的内容格式和时间格式
format格式说明:

      %(name)s  Logger的名字
      %(levelno)s 数字形式的日志级别
      %(levelname)s 文本形式的日志级别
      %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
      %(filename)s 调用日志输出函数的模块的文件名
      %(module)s 调用日志输出函数的模块名
      %(funcName)s 调用日志输出函数的函数名
      %(lineno)d 调用日志输出函数的语句所在的代码行
      %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
      %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
      %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
      %(thread)d 线程ID。可能没有
      %(threadName)s 线程名。可能没有
      %(process)d 进程ID。可能没有
      %(message)s 用户输出的消息

datefmt参数说明:

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

logger封装日志模块

# scrapy_plus/utils/log.py
import sys
import logging

# 默认的配置
DEFAULT_LOG_LEVEL = logging.INFO    # 默认等级
DEFAULT_LOG_FMT = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s'   # 默认日志格式
DEFUALT_LOG_DATEFMT = '%Y-%m-%d %H:%M:%S'  # 默认时间格式
DEFAULT_LOG_FILENAME = 'log.log'    # 默认日志文件名称


class Logger(object):

    def __init__(self):
        # 1. 获取一个logger对象
        self._logger = logging.getLogger()
        # 2. 设置format对象
        self.formatter = logging.Formatter(fmt=DEFAULT_LOG_FMT,datefmt=DEFUALT_LOG_DATEFMT)
        # 3. 设置日志输出
        # 3.1 设置文件日志模式
        self._logger.addHandler(self._get_file_handler(DEFAULT_LOG_FILENAME))
        # 3.2 设置终端日志模式
        self._logger.addHandler(self._get_console_handler())
        # 4. 设置日志等级
        self._logger.setLevel(DEFAULT_LOG_LEVEL)

    def _get_file_handler(self, filename):
        '''返回一个文件日志handler'''
        # 1. 获取一个文件日志handler
        filehandler = logging.FileHandler(filename=filename,encoding="utf-8")
        # 2. 设置日志格式
        filehandler.setFormatter(self.formatter)
        # 3. 返回
        return filehandler

    def _get_console_handler(self):
        '''返回一个输出到终端日志handler'''
        # 1. 获取一个输出到终端日志handler
        console_handler = logging.StreamHandler(sys.stdout)
        # 2. 设置日志格式
        console_handler.setFormatter(self.formatter)
        # 3. 返回handler
        return console_handler

    @property
    def logger(self):
        return self._logger

# 初始化并配一个logger对象,达到单例的
# 使用时,直接导入logger就可以使用
logger = Logger().logger

相关文章

  • springboot通过java -jar启动

    命令参数 00x0 日志配置: 默认日志:使用logging.path、logging.file 参数来指定日志输...

  • python3.6使用logging第三方库

    python3.6使用logging打印日志文件时可以使用:logging.basicConfig(level=l...

  • logging模块

    简介 logging模块是python日志管理模块 使用 日志级别: CRITICAL > ERROR > WAR...

  • 第四章 Spring Boot功能特性(二)

    全集 4.4 日志 Spring Boot使用Commons Logging进行所有内部日志记录,但是使底层日志实...

  • Logging模块-logger记录器

    Logging python 语言中日志模块 一 Logging 构成 二 Logger -使用之前必须创建Log...

  • flask中日志的使用(按照日期切割)

    使用模块 使用python自身的logging模块 实现思路 从logging获取一个日志类 根据需求设置不同的日...

  • Spring Boot 日志(八)

    Spring boot日志 Spring Boot在所有内部日志中使用Commons Logging,但是默认配置...

  • SpringBoot 学习笔记(四)

    日志系统 在 SpringBoot 中,默认日志使用 Commons Logging ,但是开放了接口 默认支持:...

  • logging 模块使用

    简单使用 日志分割 按天分割, 保留5份历史日志 日志等级(level) logging.warn('error ...

  • logging日志使用

    日志的等级 捕获异常信息到日志。这里主要需要进行捕获异常才能记录下完整的异常信息 日志的输出格式 对于日志的输出格...

网友评论

      本文标题:logging日志使用

      本文链接:https://www.haomeiwen.com/subject/byedmqtx.html