首页 > 其他 > 详细

logging模块

时间:2019-07-22 00:17:39      阅读:100      评论:0      收藏:0      [点我收藏+]

logging模块(日志)

# 日志模块  用来记录的
# import logging
# logging.basicConfig()
# logging.basicConfig(filename=‘access.log‘,
#                     format=‘%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s‘,
#                     datefmt=‘%Y-%m-%d %H:%M:%S %p‘,
#                     level=30,  # 级别30及30以上
#                     )
#
#
# logging.debug(‘debug日志‘)  # 10
# logging.info(‘info日志‘)  # 20
# logging.warning(‘warning日志‘)  # 30
# logging.error(‘error日志‘)  # 40
# logging.critical(‘critical日志‘)  # 50

"""
1.乱码
2.日志格式
3.如何既打印到终端又写到文件中
"""

# 日志分为五个等级   等级:地震的强度


"""
1.logger对象:负责产生日志

2.filter对象:过滤日志(了解)

3.handler对象:控制日志输出的位置(文件/终端)

4.formmater对象:规定日志内容的格式
"""

import logging

# 1.logger对象:负责产生日志
logger = logging.getLogger(转账记录)
# 2.filter对象:过滤日志(了解)

# 3.handler对象:控制日志输出的位置(文件/终端)
hd1 = logging.FileHandler(a1.log, encoding=utf-8)  # 输出到文件中
hd2 = logging.FileHandler(a2.log, encoding=utf-8)  # 输出到文件中
hd3 = logging.StreamHandler()  # 输出到终端

# 4.formmater对象:规定日志内容的格式
fm1 = logging.Formatter(
        fmt=%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s,
        datefmt=%Y-%m-%d %H:%M:%S %p,
)
fm2 = logging.Formatter(
        fmt=%(asctime)s - %(name)s:  %(message)s,
        datefmt=%Y-%m-%d,
)

# 5.给logger对象绑定handler对象
logger.addHandler(hd1)
logger.addHandler(hd2)
logger.addHandler(hd3)

# 6.给handler绑定formmate对象
hd1.setFormatter(fm1)
hd2.setFormatter(fm2)
hd3.setFormatter(fm1)

# 7.设置日志等级
logger.setLevel(20)

# 8.记录日志
logger.debug(写了半天 好累啊 好热啊 好想释放)



# 日志的配置字典
import os
import logging.config

# 定义三种日志输出格式 开始

standard_format = [%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]                   [%(levelname)s][%(message)s] #其中name为getlogger指定的名字

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



# 定义日志输出格式 结束



"""
下面的两个变量对应的值 需要你手动修改
"""
logfile_dir = os.path.dirname(__file__)  # log文件的目录
logfile_name = a3.log  # log文件名

# 如果不存在定义的日志目录就创建一个
if not os.path.isdir(logfile_dir):
    os.mkdir(logfile_dir)

# log文件的全路径
logfile_path = os.path.join(logfile_dir, logfile_name)
# log配置字典
LOGGING_DIC = {
    version: 1,
    disable_existing_loggers: False,
    formatters: {
        standard: {
            format: standard_format
        },
        simple: {
            format: simple_format
        },
    },
    filters: {},  # 过滤日志
    handlers: {
        #打印到终端的日志
        console: {
            level: DEBUG,
            class: logging.StreamHandler,  # 打印到屏幕
            formatter: simple
        },
        #打印到文件的日志,收集info及以上的日志
        default: {
            level: DEBUG,
            class: logging.handlers.RotatingFileHandler,  # 保存到文件
            formatter: standard,
            filename: logfile_path,  # 日志文件
            maxBytes: 1024*1024*5,  # 日志大小 5M
            backupCount: 5,
            encoding: utf-8,  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    loggers: {
        #logging.getLogger(__name__)拿到的logger配置
        ‘‘: {
            handlers: [default, console],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            level: DEBUG,
            propagate: True,  # 向上(更高level的logger)传递
        },  # 当键不存在的情况下 默认都会使用该k:v配置
    },
}


# 使用日志字典配置
logging.config.dictConfig(LOGGING_DIC)  # 自动加载字典中的配置
logger1 = logging.getLogger(asajdjdskaj)
logger1.debug(好好的 不要浮躁 努力就有收获)

 

logging模块

原文:https://www.cnblogs.com/asdaa/p/11222948.html

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