python包和logging日志的相关介绍-Python教程

资源魔 43 0

python包以及logging日记

1、包

包:文件夹下具备__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视频教程》

2、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日记的相干引见的具体内容,更多请存眷资源魔其它相干文章!

标签: Python 日志 python教程 python编程 python使用问题 logging

抱歉,评论功能暂时关闭!