08 datetime与logging模块(进阶)

datetime与logging模块

阶段一:日期与时间

1、datetime 模块中 主要类:
类名 功能说明
date 日期对象,常用的属性有year, month, day
time 时间对象hour,minute,second,毫秒
datetime 日期时间对象,常用的属性有hour, minute, second, microsecond
timedelta 时间间隔,即两个时间点之间的长度

日期: datetime.date( year, month, day )

时间: datetime.time( hour, minute, second,microsecond )

日期时间: datetime.datetime( year, month,day,hour, minute, second, microsecond )

时间间隔 : datetime.timedelta( days=0, seconds=0,microseconds=0, milliseconds=0,minutes=0, hours=0, weeks=0 )

2、datetime.datetime( ) 类中的常用方法:

1、now ():返回当前日期时间的datetime对象:

2、utcnow(…):返回当前日期时间的UTCdatetime对象

3.strptime(…):解析成datetime对象。根据string,format 2个参数,返回一个对应的datetime对象

例子: datetime.datetime.strptime(‘2018-3-22 15:28:18‘,‘%Y-%m-%d %H:%M:%S‘)

4.Strftime():格式化时间

例子:strtime=now.strftime("%Y-%m-%d %H:%M:%S")

5.时间戳转日期时间:t1= datetime.datetime.fromtimestamp(ts)

6日期时间转时间戳:t2=t1.timestamp()

3、时间运算 : ( 返回timedelte() 对象)

timedelta类是用来计算二个datetime对象的差值的。

此类中包含如下属性:

1、days:天数

2、microseconds:微秒数

3、seconds:秒数(>=0 并且 <1天)

4、total_seconds : 总秒数

4、例子
import datetime
?
# 日期
# date = datetime.date(2018,6,19)
# print(date)
# print(type(date))
?
# 时间 : : :
# t = datetime.time(10,50,30,1000)
# print(t)
# print(type(t))
?
# 日期时间
# dt = datetime.datetime(2018,6,19,10,55,30)      # 日期必须要有,时间可以没有
# print(dt)
# print(type(dt))
?
# 时间间隔
# dlt = datetime.timedelta(hours=4)
# print(dlt)
# print(type(dlt))
# print(dt + dlt)
?
# 当前时间 东八区
# now = datetime.datetime.now()
# print(now)
?
# 格林威治时间
# utc = datetime.datetime.utcnow()
# print(utc)
?
# 北京时间,东八区时间
# delt = datetime.timedelta(hours=8)
# bei_jing = utc + delt
# print(bei_jing)
?
# 解析时间
# strp = datetime.datetime.strptime(‘jun-14-18 11:45‘,‘%b-%d-%y %H:%M‘)
# print(strp)
?
# 格式化时间
# strf = now.strftime(‘%Y-%m-%d %H:%M:%S‘)
# print(strf)
?
# 时间戳转换成日期时间
# t = datetime.datetime.fromtimestamp(0)
# print(t)
?
# 日期时间转换成时间戳
# t1 = t.timestamp()
# print(t1)
?
# 获取datetime对象中数据
now = datetime.datetime.now()
# print(now)
# 小时 分钟 秒钟
# print(now.hour)
# print(now.month)
# print(now.day)
# 星期
# print(now.weekday())        # 范围0-6
# print(now.isoweekday())     # 范围1-7
# iso标准化日期   isocalendar(...)   # year年份,week number 周数,weekday星期
# a = now.isocalendar()
# year = now.isocalendar()[0]
# weekNum = now.isocalendar()[1]
# weekdaY = now.isocalendar()[2]
# print(a)
# print(year)
# print(weekNum)
# print(weekdaY)
?
# 计算你出生了多久
def how_long(year,month,day,hour=0,minut=0,second=0):
    return datetime.datetime.now() - datetime.datetime(year,month,day,hour,minut,second)
?
a = how_long(1997,9,3)
print(a)

阶段二:logging模块

1、logging用法

1.初始化 logger = logging.getLogger(“name")

2.设置级别 logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO <WARNING < ERROR < CRITICAL这几种级别,日志会记录设置级别以上的日志

3.定义Handler,常用的是StreamHandler和FileHandler,

StreamHandler:将日志在控制台输出

FileHandler: 将日志记录到文件里面

4.formatter,定义了log信息的 内容 和格式,

例如:‘%(asctime)s %(message)s‘, ‘%Y-%m-%d %H:%M:%S‘

2、logging 中几种级别

NOTSET < DEBUG < INFO < WARNING< ERROR < CRITICAL

级别 何时使用
DEBUG 详细信息,典型地调试问题时会感兴趣
INFO 证明事情按照预期工作
WARNING 表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)软件还是在正常工作
ERROR 由于更严重的问题,软件已不能执行一些功能了
CRITICAL 严重错误,表明软件已不能继续运行了
3、Formatter 中已有格式

%(name)s Logger的名字

%(levelname)s 文本形式的日志级别

%(message)s 用户输出的消息

%(asctime)s 字符串形式的当前时间。默认格式是“2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(levelno)s 数字形式的日志级别

%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有

%(filename)s 调用日志输出函数的模块的文件名

%(module)s 调用日志输出函数的模块名

%(funcName)s 调用日志输出函数的函数名

%(lineno)d 调用日志输出函数的语句所在的代码行

%(created)f 当前时间,用UNIX标准的表示时间的浮点数表示

%(relativeCreated)d 输出日志信息时的,自Logger创建以来的毫秒数

%(thread)d 线程ID。可能没有

%(threadName)s 线程名。可能没有

%(process)d 进程ID。可能没有

4、logging编程范式
import logging
?
?
# 1.初始化,实例化的过程
logger = logging.getLogger(‘test_log‘)
?
# 2.设置级别
logger.setLevel(logging.DEBUG)  # 设置最低级别,小于它的级别不会输出
?
# 3.定义handler
# 3.1 控制台输出
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR)      # error 情况下,就会在控制台输出
?
# 3.2 写入log文件
fh = logging.FileHandler(‘test_file‘)
fh.setLevel(logging.DEBUG)      # debug 级别以上我就写入log文件里
?
# 4.定义日志格式,格式化
formatter = logging.Formatter(
    ‘时间: &(asctime)s,‘
    ‘日志级别: %(levelname)s,‘
    ‘日志消息: %(message)s‘
)
# 把定义好的格式化添加到我们刚才定义的handler当中去
sh.setFormatter(formatter)
fh.setFormatter(formatter)
?
# 将我们的handler添加到logger里面去
logger.addHandler(sh)
logger.addHandler(fh)
?
?
if __name__ == ‘__main__‘:
    # logger.debug(‘测试‘)
    # logger.info(‘正常运行‘)
    # logger.warn(‘警告‘)
    # logger.error(‘报错‘)
    # logger.critical(‘非常严重的错误‘)
?
?
    def func(a):
        try:
            num = 20/a
            logger.info(num)    # 如果不报错,就正常运行
        except Exception as e:
            logger.error(e)
            # 如果报错,就把报错信息扔进来,然后返回这个级别
?
    func(0)

原文地址:https://www.cnblogs.com/zcmq/p/9275813.html

时间: 2024-11-09 16:14:40

08 datetime与logging模块(进阶)的相关文章

Python数据库 6.datetime与logging模块

6.1 datetime模块 datetime是python处理时间和日期的标准库 类名         功能说明?date 日期对象,常用的属性有year, month, day?time 时间对象hour,minute,second,毫秒?datetime 日期时间对象,常用的属性有hour, minute, second, microsecond?timedelta 时间间隔,即两个时间点之间的长度 主要使用: datetime.datetiem( ) . datetime.timedel

logging模块进阶2

1.两种级别设置: 全局级别:生成logger对象后设置的级别 局部级别:生成handler对象设置的级别 我们都知道输出的级别不能低于设定的级别,那么全局级别和局部级别哪一个对输出产生影响? 经过多次尝试发现:向屏幕和文件传输日志时,日志级别需要先和全局级别做比较,级别高于全局再去和局部级别做比较.需要经过两次过滤,才能向屏幕和文件传入日志. import logging # 1.生成logger对象 logger = logging.getLogger("130") logger.

模块调用,datetime,time,logging,递归,双层装饰器, json,pickle迭代器和生成器

一.python模块(导入,内置,自定义,开源) 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python标准库的方法. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 2.模块的引入 在Python中用关键字

time/datetime/os/sys/json/pickle/hashlib/hmac/logging 模块

python常用模块 1.time 模块 # 时间戳:时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. time_stamp=time.time() print(time_stamp,type(time_stamp)) # 1552551519.291029 <class 'float'> # 格式化时间:格式化的时间字符串(format string):格式化时间表示的是普通的字符串格式的时间. format_time=time.strftime("%Y-%

8.模块介绍 time &amp;datetime模块 random os sys shutil json &amp; picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.p

Python进阶(十一)----包,logging模块

Python进阶(十一)----包,logging模块 一丶包的使用 什么是包: ? 包是通过使用 .模块名的方式组织python模块名称空间的方式. 通俗来说,含有一个__init__.py文件的文件夹就是包. 包的作用: ? 将文件夹/模块组织起来,来提高程序的结构性和可维护性. ? 目的不是运行,为了导入使用.包只是一种形式,包的本质就是一个模块 import: # 创建一个包,也会发生三件事: ''' 1. 将该aaa包内 __init__py文件加载到内存. 2. 创建一个以aaa命名

logging模块全总结

本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日志输出中添加上下文信息 参考文档 一.日志相关概念 日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件也有重要性的概念,这个重要性也可以被称为严重性级别(level)

Python之日志处理(logging模块)

本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日志输出中添加上下文信息 参考文档 一.日志相关概念 日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件也有重要性的概念,这个重要性也可以被称为严重性级别(level)

25.logging模块

本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 参考文档 一.日志相关概念 1.日志的作用 简单来讲就是,我们通过记录和分析日志可以了解一个系统或软件程序运行情况是否正常,也可以在应用程序出现故障时快速定位问题.比如,做运维的同学,在接收到报警或各种问题反馈后,进行问题排查时通常都会先去看各种日志,大部分问题都可以在日志中找到答案.再比如,做开发的同学,可以通过IDE控制台上输出