类别:Python / 日期:2019-12-02 / 浏览:86 / 评论:0

python包和logging日记

一、包

包:文件夹下具有__init__.py文件就是一个包,包用来治理多个模块

包的构造以下:

bake            
    ├── __init__.py       
    ├── api               
        ├── __init__.py
        ├── policy.py
        └── versions.py
  ├── cmd             
    ├── __init__.py
    └── manage.py
  └── db                
      ├── __init__.py
      └── models.py

在bake的同级建立一个test.py导入policy.py:

import bake.api.policy
bake.api.policy.get()
#导入的名字太长了,能够起别号
import bake.api.policy as p
p.get()
#from 导入在__init__.py修正
from . import policy
#我们需要在policy文件中向sys.path增加了当前的途径
import os
import sys
sys.path.insert(os.path.dirname(__file__))
#print(__file__)检察一下
#运用__all__,在__init__.py中
__all__ = ["policy"]
#或
from . import policy

总结:

import 包.包.包

from 包.包.包 import 模块

途径:

相对:从在外层最先导入

相对:从当前最先(.)导入或许从父级(..)导入

运用相对途径时必须在包的最外层且同级

from 包 import *

需要在__init__.py做操纵

python2:import文件夹(没有__init__.py)会报错

python3:import文件夹(没有__init__.py)不会报错

相干引荐:《Python视频教程》

二、logging模块

logging模块用于纪录软件的种种状况,生意业务纪录,毛病纪录,登录纪录……

1.函数式简朴设置:

import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

默许情况下python的logging模块将日记打印到了规范输出中,且只显现了大于即是WARNING级别的日记,证实默许的级别为WARNING

日记级别:CRITICAL > ERROR > WARNING > INFO > DEBUG

2.天真设置日记级别,日记情势,输入位置(低配版)

只能写入日记,不能公屏输出

import logging
logging.basicConfig(level = logging.DEBUG,
                    format = '%(astime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt = '%Y-%m-%d %H:%M:%S',
                    filename = 'test.log',
                    filemode = 'a')
dic = {"key":123}
logging.debug(dic)
num = 100
logging.info(f"用户余额:{num - 50}")
try:
    num = int(input("请输入数字:"))
except Exception as e:
    logging.warning("e")
logging.error('error message')
logging.critical('critical message')

basicConfig()函数中可通过细致参数来变动logging模块默许行动,可用参数有:

filename:用指定的文件名建立FiledHandler,如许日记会被存储在指定的文件中。

filemode:文件打开方式,在指定了filename时运用这个参数,默许值为“a”还可指定为“w”。

format:指定handler运用的日记显现花样。

datefmt:指定日期时候花样。

level:设置纪录日记的级别

stream:用指定的stream建立StreamHandler。能够指定输出到

sys.stderr,sys.stdout或许文件(f=open(‘test.log’,’w’)),默许为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被疏忽。

format参数中能够用到的花样化串:

%(name)s Logger的名字

%(levelno)s 数字情势的日记级别

%(levelname)s 文本情势的日记级别

%(pathname)s 挪用日记输出函数的模块的完全途径名,能够没有

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

%(module)s 挪用日记输出函数的模块名

%(funcName)s 挪用日记输出函数的函数名

%(lineno)d 挪用日记输出函数的语句地点的代码行

%(created)f 当前时候,用UNIX规范的示意时候的浮 点数示意

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

%(asctime)s 字符串情势的当前时候。默许花样是 “2003-07-08 16:49:45,896”。逗号背面的是毫秒

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

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

%(process)d 历程ID。能够没有

%(message)s用户输出的音讯

3.logger对象设置(中配版)

import logging
logger = logging.getLogger()
# 建立一个logger
fh = logging.FileHandler('test.log',mode="a",encoding='utf-8')   # 文件
ch = logging.StreamHandler()   # 屏幕
formatter = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - [line:%(lineno)d] -  %(levelname)s - 
%(message)s')
# 将屏幕和文件都是用以上花样
logger.setLevel(logging.DEBUG)
# 设置纪录级别
fh.setFormatter(formatter)
# 运用自定义的花样化内容
ch.setFormatter(formatter)
logger.addHandler(fh) #logger对象能够增加多个fh和ch对象
logger.addHandler(ch)
logger.debug('logger debug message')
logger.info('logger info message')
logger.warning('logger warning message')
logger.error('logger error message')
logger.critical('logger critical message')

以上就是python包和logging日记的相干引见的细致内容,更多请关注ki4网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。