首页 > 其他 > 详细

logging模块

时间:2020-04-01 21:44:49      阅读:78      评论:0      收藏:0      [点我收藏+]

日志级别与配置

import logging

# 一:日志配置
logging.basicConfig(
    # 1、日志输出位置:1、终端 2、文件
    # filename=‘access.log‘, # 不指定,默认打印到终端

    # 2、日志格式
    format=%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s,

    # 3、时间格式
    datefmt=%Y-%m-%d %H:%M:%S %p,

    # 4、日志级别
    # critical => 50
    # error => 40
    # warning => 30
    # info => 20
    # debug => 10
    level=30,
)

# 二:输出日志
logging.debug(调试debug)
logging.info(消息info)
logging.warning(警告warn)
logging.error(错误error)
logging.critical(严重critical)

‘‘‘
# 注意下面的root是默认的日志名字
WARNING:root:警告warn
ERROR:root:错误error
CRITICAL:root:严重critical
‘‘‘

 

日志配置字典

"""
日志配置字典LOGGING_DIC
"""
# 1、定义三种日志输出格式,日志中可能用到的格式化串如下
# %(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用户输出的消息

# 2、强调:其中的%(name)s为getlogger时指定的名字
standard_format = %(asctime)s - %(threadName)s:%(thread)d - %(name)s - %(filename)s:%(lineno)d -                   %(levelname)s - %(message)s

simple_format = [%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s

test_format = %(asctime)s  %(message)s

# 3、日志配置字典
LOGGING_DIC = {
    version: 1,
    disable_existing_loggers: False,
    formatters: {
        standard: {
            format: standard_format
        },
        simple: {
            format: simple_format
        },
        test: {
            format: test_format
        },
    },
    filters: {},
    # handlers是日志的接收者,不同的handler会将日志输出到不同的位置
    handlers: {
        #打印到终端的日志
        console: {
            level: DEBUG,
            class: logging.StreamHandler,  # 打印到屏幕
            formatter: simple
        },
        default: {
            level: DEBUG,
            class: logging.handlers.RotatingFileHandler,  # 保存到文件
            # ‘maxBytes‘: 1024*1024*5,  # 日志大小 5M
            maxBytes: 500,
            backupCount: 5,
            filename: a3.log,  # os.path.join(os.path.dirname(os.path.dirname(__file__)),‘log‘,‘a2.log‘)
            encoding: utf-8,
            formatter: standard,

        },
        #打印到文件的日志,收集info及以上的日志
        other: {
            level: DEBUG,
            class: logging.FileHandler,  # 保存到文件
            filename: a2.log, # os.path.join(os.path.dirname(os.path.dirname(__file__)),‘log‘,‘a2.log‘)
            encoding: utf-8,
            formatter: test,

        },
    },
    # loggers是日志的产生者,产生的日志会传递给handler然后控制输出
    loggers: {
        #logging.getLogger(__name__)拿到的logger配置
        kkk: {
            handlers: [console,other],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            level: DEBUG, # loggers(第一层日志级别关限制)--->handlers(第二层日志级别关卡限制)
            propagate: False,  # 默认为True,向上(更高level的logger)传递,通常设置为False即可,否则会一份日志向上层层传递
        },
        终端提示: {
            handlers: [console,],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            level: DEBUG,  # loggers(第一层日志级别关限制)--->handlers(第二层日志级别关卡限制)
            propagate: False,  # 默认为True,向上(更高level的logger)传递,通常设置为False即可,否则会一份日志向上层层传递
        },
    # ‘‘为默认使用的
‘‘: { handlers: [default, ], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕 level: DEBUG, # loggers(第一层日志级别关限制)--->handlers(第二层日志级别关卡限制) propagate: False, # 默认为True,向上(更高level的logger)传递,通常设置为False即可,否则会一份日志向上层层传递 }, }, }

 

使用

import settings

# !!!强调!!!
# 1、logging是一个包,需要使用其下的config、getLogger,可以如下导入
# from logging import config
# from logging import getLogger

# 2、也可以使用如下导入
import logging.config # 这样连同logging.getLogger都一起导入了,然后使用前缀logging.config.

# 3、加载配置
logging.config.dictConfig(settings.LOGGING_DIC)

# 4、输出日志
logger1=logging.getLogger(用户交易)
logger1.info(egon儿子alex转账3亿冥币)

# logger2=logging.getLogger(‘专门的采集‘) # 名字传入的必须是‘专门的采集‘,与LOGGING_DIC中的配置唯一对应
# logger2.debug(‘专门采集的日志‘)

common.py

 

logging模块

原文:https://www.cnblogs.com/BoyGc/p/12612930.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!