python常用模块

一 logging模块

CRITICAL = 50 #FATAL = CRITICAL
ERROR = 40
WARNING = 30 #WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0 #不设置
01.日志级别

 

常用配置文件使用logging

 1 """
 2 logging配置
 3 """
 4 # 定义三种日志输出格式 开始
 5 
 6 standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
 7                   '[%(levelname)s][%(message)s]' #其中name为getlogger指定的名字
 8 
 9 simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
10 
11 id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'
12 
13 
14 # log文件的全路径
15 fh1_logfile_path = 'b1.log'
16 fh2_logfile_path = 'b2.log'
17 
18 # log配置字典
19 LOGGING_DIC = {
20     'version': 1,
21     'disable_existing_loggers': False,
22     'formatters': {
23         'standard': {
24             'format': standard_format
25         },
26         'simple': {
27             'format': simple_format
28         },
29     },
30     'filters': {},
31     'handlers': {
32         #打印到终端的日志,使用的格式为 simple_format
33         'ch': {
34             'level': 'DEBUG',
35             'class': 'logging.StreamHandler',  # 打印到屏幕
36             'formatter': 'simple'
37         },
38         #打印到文件b1.log的日志,使用的格式为 standard_format
39         'fh1': {
40             'level': 'DEBUG',
41             'class': 'logging.FileHandler',  # 保存到文件
42             'formatter': 'standard',
43             'filename': fh1_logfile_path,  # 日志文件
44             'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
45         },
46         #打印到文件b2.log的日志,使用的格式为 standard_format
47         'fh2': {
48             'level': 'DEBUG',
49             'class': 'logging.FileHandler',  # 保存到文件
50             'formatter': 'standard',
51             'filename': fh2_logfile_path,  # 日志文件
52             'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
53         },
54     },
55     'loggers': {
56         # 'logger1': {
57         #     'handlers': ['ch', 'fh1','fh2'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
58         #     'level': 'DEBUG',
59         #     'propagate': False,
60         # },
61         # '交易日志': {
62         #     'handlers': ['ch', 'fh1','fh2'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
63         #     'level': 'DEBUG',
64         #     'propagate': False,
65         # },
66         # '用户权限': {
67         #     'handlers': ['ch', 'fh1','fh2'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
68         #     'level': 'DEBUG',
69         #     'propagate': False,
70         # },
71 
72         '': { # 空字符串表示为通配的logger配置,但找不到匹配的logger名的key时采用
73             'handlers': ['ch', 'fh1','fh2'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
74             'level': 'DEBUG',
75             'propagate': False,
76         },
77     },
78 }
settings.py
 1 import settings
 2 import logging.config
 3 
 4 logging.config.dictConfig(settings.LOGGING_DIC)
 5 # logger1=logging.getLogger('logger1')
 6 # logger1=logging.getLogger('交易日志')
 7 #
 8 # logger1.debug('测试日志')
 9 
10 # logger2=logging.getLogger('用户权限')
11 # logger2.debug('测试日志')
12 
13 # import logging.config 的时候 logging也被导入的进来
14 logger1=logging.getLogger('交易日志')
15 logger2=logging.getLogger('用户权限')
16 logger1.debug('测试日志')
17 logger2.debug('测试日志')
18 
19 
20 # 完整的日志内容;
21 # 时间
22 # 级别
23 # 类型:跟什么业务有关
24 # 文件名/行号
25 # 具体的内容
从字典中加载logging模块的配置.py

 

 

二 datetime模块

在计算机中,时间实际上是用数字表示的。我们把1970年1月1日00:00:00 UTC+00:00时区的时刻称为epoch time,记为0(1970年以前的世界timestamp为负数),当前的时间相对于epoch time的秒数,称为timestamp。

timestamp的值为时区毫无关系,因为timestamp一但确定,其UTC时间就确定了,转换到任何时区也是确定的,这就是为什么计算机存储的当前时间是以timestamp表示的,因为全球各地的计算机在任意时刻的timestamp是相同的(前提:时间已校准)。

 

 

 

 

参考:

1. http://www.cnblogs.com/linhaifeng/articles/6384466.html

posted @ 2019-07-06 19:39  甜麦地  阅读(183)  评论(0编辑  收藏  举报