2021/1/12 logging模块(python)

logging模块(日志模块)

@@普通版@@

import logging
logging.basicConfig(
    level=logging.DEBUG
)
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    filename='test.log',
    filemode='w'
)
logging.debug('调试模式')  # 10
logging.info('正常模式')  # 20
logging.warning('警告信息')  # 30
logging.error('错误信息')  # 40
logging.critical('严重错误信息')  # 50

@@标准版@@

import logging

logger = logging.getLogger()
#创建一个文件对象
fh = logging.FileHandler('标配版.log', encoding='utf-8')

#创建一个屏幕对象
sh = logging.StreamHandler()
#绑定log格式
formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
formatter1 = logging.Formatter('%(asctime)s %(filename)s')
#创建一个文件的格式
fh.setFormatter(formatter)
#创建一个屏幕格式
sh.setFormatter(formatter1)
#绑定对象
logger.addHandler(fh)
logger.addHandler(sh)
#设置总开关
logger.setLevel(10)
#设置文件开关
fh.setLevel(10)
sh.setLevel(30)

logging.debug('调试模式')  # 10
logging.info('正常模式')  # 20
logging.warning('警告信息')  # 30
logging.error('错误信息')  # 40
logging.critical('严重错误信息')  # 50

@@适用版@@

import logging.config

standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d'\
                  '[%(levelname)s][%(message)s]'

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

id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'
#定义日志输出路径与文件名
logfile_name = 'log1.log'
logfile_path = r'C:\Users\ping\PycharmProjects\untitled\d19\log1.log'
#log字典
#log字典所有的键不能改变
LOGGING_DIC = {
    'version': 1, #版本号
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        }
    },#格式(标准格式,简单格式)
    'filtes': {},#过滤
    'handlers': {
        #打印到终端的日志
        'sh': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        #打印到文件的日志,收集info及以上日志
        'fh': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler', #配置轮转文件,保存文件
            'formatter': 'standard',
            'filename': logfile_path, #日志文件
            'maxBytes': 300, #1024*1024*5, #日志文件大小限制 5MB
            'backupCount': 5,
            'encoding': 'utf-8' #日志文件的编码
        },
    },#文件句柄
    'loggers': {
        '': {
            'handlers': ['sh', 'fh'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            'level': 'DEBUG',
            'propagate': True, #向上(更高level的logger)传递
        },
    },


}
#导入上面定义的logging配置
logging.config.dictConfig(LOGGING_DIC)
#生成一个log实例
logger = logging.getLogger("购物车日志")
#记录该文件的运行状态
logger.debug('It works')

@@使用@@

import logging.config

standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d'\
                  '[%(levelname)s][%(message)s]'

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

id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'
#定义日志输出路径与文件名
logfile_name = 'log1.log'
logfile_path = r'C:\Users\ping\PycharmProjects\untitled\d19\log1.log'
#log字典
#log字典所有的键不能改变
LOGGING_DIC = {
    'version': 1, #版本号
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        },
        'id_simple': {
            'format': id_simple_format
        }
    },#格式(标准格式,简单格式)
    'filtes': {},#过滤
    'handlers': {
        #打印到终端的日志
        'sh': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        #打印到文件的日志,收集info及以上日志
        'fh': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler', #配置轮转文件,保存文件
            'formatter': 'standard',
            'filename': logfile_path, #日志文件
            'maxBytes': 300, #1024*1024*5, #日志文件大小限制 5MB
            'backupCount': 5,
            'encoding': 'utf-8' #日志文件的编码
        },
    },#文件句柄
    'loggers': {
        '': {
            'handlers': ['sh', 'fh'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            'level': 'DEBUG',
            'propagate': True, #向上(更高level的logger)传递
        },
    },


}
# #导入上面定义的logging配置
# logging.config.dictConfig(LOGGING_DIC)
# #生成一个log实例
# logger = logging.getLogger("购物车日志")
# #记录该文件的运行状态
# logger.debug('It works')

def logger():
    logging.config.dictConfig(LOGGING_DIC)
    logger = logging.getLogger()
    return logger

def login():
    logger().info('登陆成功')

login()

 

posted @ 2021-01-12 21:52  ping_sen  阅读(80)  评论(0)    收藏  举报