Python常用模块 之 datetime模块和logging模块实战使用

Posted 孤寒者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python常用模块 之 datetime模块和logging模块实战使用相关的知识,希望对你有一定的参考价值。

目录:

每篇前言:


1. datatime模块习题:

①题目:

  • 写一个程序能接收用户输入出生日期从而计算出用户活了多久。

②解题:

from datetime import datetime

def get_day(birthday):
    birthday = datetime.strptime(birthday,'%Y-%m-%d')
    now = datetime.now()
    days = now - birthday
    print('你从出生到现在已经过去了%s天'%days.days)

birthday = input('请输入您的生日\\n(格式为:年-月-日):')
get_day(birthday)

2.logging模块习题:

①题目:

  • 使用logging模块化组件实现能记录错误信息到文件的程序,并在程序里制造错误,看错误信息是否被记录下来。

②解题:

(1)比较low的实现:

import logging

# 实例化
my_logger = logging.getLogger('python')

# 进去文件  FileHandler
fh = logging.FileHandler('guhanzhe.log',encoding='utf-8')

# 设置级别为INFO
fh.setLevel(logging.INFO)

# 格式化输出
formatter = logging.Formatter(
    '时间:%(asctime)s'
    '日志级别%(levelname)s'
    '日志消息:%(message)s'
)

# 把格式添加到文件管理者
fh.setFormatter(formatter)
my_logger.addHandler(fh)      # 让实例化对象知道格式化输出

if __name__ == '__main__':
    try:
        a = 1/0           
    except Exception as e:
        my_logger.error(e)

(2)没那么low的实现:

import logging

def lo():
    # 1.创建记录器并设置级别
    logger = logging.getLogger('guhanzhe')
    logger.setLevel(logging.DEBUG)

    # 2.写入到文件
    fh = logging.FileHandler('guhanzhe.log', encoding='utf-8')

    # 3.格式
    formatter = logging.Formatter(
        '时间:%(asctime)s'
        '日志级别:%(levelname)s'
        '日志消息:%(message)s'
        '日志名称:%(name)s'
    )

    # 格式器添加到处理器
    fh.setFormatter(formatter)
    # 处理器添加到记录器
    logger.addHandler(fh)

    return logger

log = lo()
try:
    print(aa)
except Exception as e:
    log.debug(e)

(3)再进阶一点的实现(使用装饰器):

import logging

def log(func):
    def lo():
        # 1.创建记录器并设置级别
        logger = logging.getLogger('guhanzhe')
        logger.setLevel(logging.DEBUG)

        # 2.写入到文件
        fh = logging.FileHandler('guhanzhe.log', encoding='utf-8')

        # 3.格式
        formatter = logging.Formatter(
            '时间:%(asctime)s'
            '日志级别:%(levelname)s'
            '日志消息:%(message)s'
            '日志名称:%(name)s'
        )

        # 格式器添加到处理器
        fh.setFormatter(formatter)
        # 处理器添加到记录器
        logger.addHandler(fh)
        result = func()
        logger.error(result)
    return lo


@log
def demo():
    try:
        print(aa)
    except  Exception as e:
        return e

demo()

以上是关于Python常用模块 之 datetime模块和logging模块实战使用的主要内容,如果未能解决你的问题,请参考以下文章

Python常用模块 之 datetime模块和logging模块实战使用

Python标准库datetime之date模块详解

python基础之模块(time,datetime,os,random)

Python 常用基础模块:时间模块

Python标准库datetime之datetime模块详解

Python标准库datetime之time模块详解