Fourteen time_logging模块

1、time

# 时间戳 计算机用
time.time() 时间戳,从1970 1 1 0:00 距今的时间

# 格式时间
ft = time.strftime("%Y{}%m{}%d{} %I:%M:%S ").format('', '', '')

# 结构化时间以元组的形式存在
struct_time = time.localtime()
# 时间戳 ---> 格式化时间
timestamp = time.time()
st = time.localtime(timestamp)  # 先将时间戳转化成结构化时间
ft = time.strftime('%Y/%m/%d %H:%M:%S',st)
print(ft)
 # 格式化时间 ----> 时间戳
ft = time.strftime('%Y/%m/%d %H:%M:%S')
st = time.strptime(ft,'%Y/%m/%d %H:%M:%S') # 现将格式化时间转化成结构化时间
timestamp = time.mktime(st)
print(timestamp)
# 结构化时间 ----> 格式化时间
struct_time = time.localtime()
st = time.asctime(struct_time)
print(st)  # Tue Jan  8 11:10:43 2019  格式固定

# 时间戳--->格式化时间
print(time.ctime(15000000000))

2、datetime

import datetime
now_time = datetime.datetime.now()
print(now_time)
print(now_time + datetime.timedelta(weeks=3))
print(now_time + datetime.timedelta(weeks=-3))
# 可以算days、hours、minutes、seconds后

# 也可以直接调整
print(now_time.replace(year=1989,month=4,day=25))
 

3、logging(高级模式)

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'

# boss版格式(lowb版)
id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'

# 定义日志输出格式 结束



logfile_name = r'D:\python骑士计划3期\day14\log\staff.log'  # log文件名

# log配置字典

LOGGING_DIC = {
    'version': 1,  # 版本
    'disable_existing_loggers': False,  # 可否重复使用之前的logger对象
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        },
        'boss_formatter':{
            'format': id_simple_format
        },
    },
    'filters': {},
    'handlers': {
        #打印到终端的日志
        'stream': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',  # 打印到屏幕
            'formatter': 'simple'
        },
        #打印到文件的日志,收集info及以上的日志  文件句柄
        'file': {
            'level': 20,
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'standard',  #标准
            'filename': logfile_name,  # 日志文件
            'maxBytes': 300,  # 日志大小 300 bit
            'backupCount': 5,  #轮转文件数
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    'loggers': {
        #logging.getLogger(__name__)拿到的logger配置
        '': {
            'handlers': ['stream', 'file'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            'level': 'DEBUG',  # 总级别
            'propagate': True,  # 向上(更高level的logger)传递
        },
    },
}
# 字典中第一层的所有key都是固定不可变的。
import logging
logging.config.dictConfig(LOGGING_DIC)
logger = logging.getLogger()  # 这个logger对象是通过自己个性化配置的logger对象
logger.info('运转正常')

 

posted @ 2019-01-09 20:12  pythonernoob  阅读(117)  评论(0)    收藏  举报