Day14 logging,datetime

01昨日内容回顾

02项目目录规范

代码不可能全部写在一个文件,十几万行代码,调整修改不方便,所以要将代码规范化

 

03timedaetime模块

time:

#1,第一种:time.time()时间戳,供计算机用

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

 

#2,第二种:格式化时间 strtime()

%y 两位数的年份表示(00-99%Y 四位数的年份表示(000-9999%m 月份(01-12%d 月内中的一天(0-31%H 24小时制小时数(0-23%I 12小时制小时数(01-12%M 分钟数(00=59%S 秒(00-59%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

 

python中时间日期格式化符号

>>>time.strftime("%Y-%m-%d %H-%M-%S") '2017-07-24 13-55-04'

 

#3,结构化时间:以元组的形式存在

time.localtime()

time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24,tm_hour=13, tm_min=59, tm_sec=37,

tm_wday=0,tm_yday=205,tm_isdst=0)

# 格式化时间 ---->  结构化时间

ft = time.strftime('%Y/%m/%d %H:%M:%S')

st = time.strptime(ft,'%Y/%m/%d %H:%M:%S')

print(st)

# 结构化时间 ---> 时间戳

t = time.mktime(st)

print(t)

 

# 时间戳 ----> 结构化时间

t = time.time()

st = time.localtime(t)

print(st)
# 结构化时间 ---> 格式化时间

ft = time.strftime('%Y/%m/%d %H:%M:%S',st)

print(ft)
#结构化时间 --> %a %b %d %H:%M:%S %Y串

#time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串 >>>time.asctime(time.localtime(1500000000)) 'Fri Jul 14 10:40:00 2017'

>>>time.asctime() 'Mon Jul 24 15:18:33 2017'
#时间戳 --> %a %d %d %H:%M:%S %Y串

#time.ctime(时间戳)  如果不传参数,直接返回当前时间的格式化串

>>>time.ctime() 'Mon Jul 24 15:19:07 2017'

>>>time.ctime(1500000000) 'Fri Jul 14 10:40:00 2017' 
# datatime模块 import datetime now_time = datetime.datetime.now()  # 现在的时间 # 只能调整的字段:

weeks days hours minutes seconds

print(datetime.datetime.now() +datetime.timedelta(weeks=3)) # 三周后

print(datetime.datetime.now()+datetime.timedelta(weeks=-3)) # 三周前

print(datetime.datetime.now()+datetime.timedelta(days=-3)) # 三天前

print(datetime.datetime.now()+datetime.timedelta(days=3)) # 三天后

print(datetime.datetime.now()+datetime.timedelta(hours=5)) # 5小时后

print(datetime.datetime.now()+datetime.timedelta(hours=-5)) # 5小时前

print(datetime.datetime.now()+datetime.timedelta(minutes=-15)) # 15分钟前

print(datetime.datetime.now()+datetime.timedelta(minutes=15)) # 15分钟后

print(datetime.datetime.now()+datetime.timedelta(seconds=-70)) # 70秒前

print(datetime.datetime.now() + datetime.timedelta(seconds=70)) # 70秒后

current_time = datetime.datetime.now() # 可直接调整到指定的 年 月 日 时 分 秒 等

print(current_time.replace(year=1977))  # 直接调整到1977年

print(current_time.replace(month=1))  # 直接调整到1月份

print(current_time.replace(year=1989,month=4,day=25))  # 1989-04-25 18:49:05.898601# 将时间戳转化成时间

print(datetime.date.fromtimestamp(1232132131))  # 2009-01-17

 

04 logging模块

高级版:

"""

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'

 

id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'

 

# 定义日志输出格式 结束

 

logfile_dir = os.path.dirname(os.path.abspath(__file__))  # log文件的目录

 

logfile_name = 'all2.log'  # log文件名

 

# 如果不存在定义的日志目录就创建一个

if not os.path.isdir(logfile_dir):

    os.mkdir(logfile_dir)

 

# log文件的全路径

logfile_path = os.path.join(logfile_dir, logfile_name)

 

# log配置字典

LOGGING_DIC = {

    'version': 1,

    'disable_existing_loggers': False,

    'formatters': {

        'standard': {

            'format': standard_format

        },

        'simple': {

            'format': simple_format

        },

    },

    'filters': {},

    'handlers': {

        #打印到终端的日志

        'console': {

            'level': 'DEBUG',

            'class': 'logging.StreamHandler',  # 打印到屏幕

            'formatter': 'simple'

        },

        #打印到文件的日志,收集info及以上的日志

        'default': {

            'level': 'DEBUG',

            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件

            'formatter': 'standard',

            'filename': logfile_path,  # 日志文件

            'maxBytes': 1024*1024*5,  # 日志大小 5M

            'backupCount': 5,

            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了

        },

    },

    'loggers': {

        #logging.getLogger(__name__)拿到的logger配置

        '': {

            'handlers': ['default', 'console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕

            'level': 'DEBUG',

            'propagate': True,  # 向上(更高level的logger)传递

        },

    },

}

 

 

def load_my_logging_cfg():

    logging.config.dictConfig(LOGGING_DIC)  # 导入上面定义的logging配置

    logger = logging.getLogger(__name__)  # 生成一个log实例

    logger.info('It works!')  # 记录该文件的运行状态

 

if __name__ == '__main__':

    load_my_logging_cfg()

 

 

posted @ 2019-01-09 22:18  addit  Views(69)  Comments(0)    收藏  举报