python 中配置 log 日志的写法

文章目录


下方代码即日志文件的 python 写法,可用于简单或复杂的 python 项目,Django 项目,自动化测试项目等,在其他模块中使用时候,注意注释掉最下面三行,代码 logfile_path_staff 字段修改成对应项目的 log 存放地址,然后在其他模块中通过 log().info("文本信息")或者调用其中定义好的 log 方法即可

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'

# 定义日志输出格式
# log 文件名
logfile_name = 'log_file.log'
logfile_path_staff = r'C:\Users\Administrator\PycharmProjects\log\log_file.log'

# log 配置字典
# logging_dic 第一层的所有的键不能改变
logging_dic= {
	# 版本号
    'version': 1,
    # 固定写法
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        },
    },
    'filters': {},
    'handlers': {
        #打印到终端的日志
        'sh': {
            'level': 'DEBUG',
            # 打印到屏幕
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        #打印到文件的日志,收集 info 及以上的日志
        'fh': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',  
            'formatter': 'standard',
            # 日志文件
            'filename': logfile_path_staff,
            # 日志大小 1048576 字节 == 1 M
            'maxBytes': 1048576,
            # 轮转文件的个数
            'backupCount': 5,
            # 日志文件的编码
            'encoding': 'utf-8',
        },
    },
    'loggers': {
        # logging.getLogger(__name__) 拿到的 logger 配置
        '': {
        	# 这里把上面定义的两个 handler 都加上,即 log 数据既写入文件又打印到屏幕
            'handlers': ['sh', 'fh'],
            'level': 'DEBUG',
            # 向上(更高 level 的 logger)传递
            'propagate': True,
        },
    },
}

def log():
	# 导入上面定义的 logging 配置 通过字典方式去配置这个日志
    logging.config.dictConfig(logging_dic)
    # 生成一个 log 实例  这里可以有参数 传给 task_id
    logger = logging.getLogger()
    return logger
    # logger.debug('It works!')  # 记录该文件的运行状态

dic = {
    'username': '李明'
}

# 开始信息
def start_info():
    log().info(f"开始~")

# 结束信息
def end_info():
    log().info(f"结束~")

# 登陆信息
def login():
    log().info(f"{dic['username']}登陆成功")

# 这里只做测试用,其他模块调用时,这三行必须要注释掉!
start_info()
login()
end_info()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

abcnull

您的打赏是我创作的动力之一

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值