Python数据库 6.datetime与logging模块

1. datetime模块

Python的datetime模块提供了处理日期和时间的方法,通过它可以进行日期时间的计算和格式化等操作。以下是一些常用的操作:

1.1 获取当前时间

使用datetime库中的datetime对象,可以获取当前的日期和时间。

import datetime

now = datetime.datetime.now()

print("当前时间为:", now)

现在的时间是一个常见的操作,这个方法可以方便的获取系统当前的时间和日期。

1.2 时间的加减

使用datetime.timedelta()实现时间的加减。

import datetime

# 从现在起7天后的时间

d = datetime.datetime.now() + datetime.timedelta(days=7)

print(d.strftime('%Y-%m-%d %H:%M:%S'))

# 从现在起3小时后的时间

d = datetime.datetime.now() + datetime.timedelta(hours=3)

print(d.strftime('%Y-%m-%d %H:%M:%S'))

# 从现在起10分钟后的时间

d = datetime.datetime.now() + datetime.timedelta(minutes=10)

print(d.strftime('%Y-%m-%d %H:%M:%S'))

时间的加减操作可以用于计算时间差或预测时间点,可以实现在指定时间之前或之后某一段时间的操作。

1.3 时间格式化

使用strftime()方法,可以将datetime对象转换为指定格式的字符串。

import datetime

# 将datetime对象转换为字符串

now = datetime.datetime.now()

print(now.strftime('%Y-%m-%d %H:%M:%S'))

将时间转换为可视化的字符串,方便展示和存储。

2. logging模块

Python的logging模块是一个日志记录工具,主要用于跟踪程序的运行状态。可以很方便地记录程序的日志信息,通过对这些信息进行分析和统计,可以快速定位程序中的错误和异常。

2.1 日志级别

Python的logging模块可以设置不同的日志级别,用来输出不同类型的日志信息。以下是Python logging模块中的五个日志级别:DEBUG、INFO、WARNING、ERROR和CRITICAL。

import logging

logging.debug('调试信息')

logging.info('普通信息')

logging.warning('警告信息')

logging.error('错误信息')

logging.critical('严重错误信息')

设置不同级别的日志信息,方便查找不同的问题。

2.2 日志输出

logging的日志可以输出到文件、控制台等,可以根据需要定制输出。

import logging

logging.basicConfig(level=logging.DEBUG, filename='mylog.txt', filemode='w', format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

console = logging.StreamHandler()

console.setLevel(logging.INFO)

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

console.setFormatter(formatter)

logging.getLogger('').addHandler(console)

logging.debug('调试信息')

logging.info('普通信息')

logging.warning('警告信息')

logging.error('错误信息')

logging.critical('严重错误信息')

定制日志的输出方式,便于查找和分析。

2.3 日志追踪

logging模块可以使用堆栈信息来追踪代码问题。

import logging

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

def foo(s):

return 10/int(s)

def bar(s):

return foo(s) * 2

def main():

try:

res = bar('0')

except Exception as e:

logging.exception(e)

if __name__ == "__main__":

main()

追踪日志信息的发生位置,便于debug。

2.4 日志过滤

对于一些需要过滤的日志信息,可以定制过滤规则来筛选输出日志。

import logging

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

class MyFilter(logging.Filter):

def filter(self, record):

if record.getMessage().startswith('Starting'):

return False

return True

def main():

logger = logging.getLogger('')

logger.addFilter(MyFilter())

logger.debug('Starting read')

logger.debug('Continuing')

logger.debug('Whew! Finished reading')

if __name__ == "__main__":

main()

通过过滤规则筛选需要的日志信息,方便输出和查找。

总结

Python的datetime和logging模块在日常的开发中经常用到,时间的加减、时间的格式化和输出日志等操作经常出现在不同的场景中。掌握这些模块可以提高我们的开发效率,减少调试和排查的时间,提高开发效率和质量。

后端开发标签