python 中无法导入日志包_Python包和日志模块

1、什么是包

包是模块的一种形式,包的本质就是一个含有__init__.py文件的文件夹

2、为什么要有包

提高开发人员维护性

3、如何用包

导入包就是在导包下的__init__.py

import ...

from ... import...

主义的问题:

1、包内所有的文件都是被导入使用的,而不是被直接运行的

2、包内部模块之间的导入可以使用绝对导入(以包的根目录为基准)与相对导入(以当前被导入的模块所在的目录为基准)

推荐使用相对导入

3、当文件是执行文件时,无法在该文件内用相对导入的语法

只有在文件时被当作模块导入时,该文件内才能使用相对导入的语法

4、凡是在导入时带点的,点的左边都必须是一个包

import aaa.bbb.m3.f3 # 错误

日志模块说明:

import logging

进行基本的日志配置

logging.basicConfig(filename='access.log',

format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',

datefmt='%Y-%m-%d %H:%M:%S %p',

level=10,

# stream=True

)

日志5个级别遵循原则:自下而上进行匹配 #debug-》info-》warning-》error-》critical

logging.debug('调试信息') #10

logging.info('正常信息') #20

logging.warning('不好啦着火啦') #30

logging.error('报错信息') #40

logging.critical('严重错误信息') #50

import logging

# logging模块包含四种角色:logger,filter,formatter,handler

#1、logger:负责产生日志信息

logger1=logging.getLogger('交易日志')

# logger2=logging.getLogger('用户相关')

#2、filter:负责筛选日志

#3、formatter:控制日志输出格式

formatter1=logging.Formatter(

fmt='%(asctime)s:%(name)s:%(levelname)s:%(message)s',

datefmt='%Y-%m-%d %X'

)

formatter2=logging.Formatter(

fmt='%(asctime)s:%(message)s',

datefmt='%Y-%m-%d %X'

)

#4、handler:负责日志输出的目标

h1=logging.FileHandler(filename='a1.log',encoding='utf-8')

h2=logging.FileHandler(filename='a2.log',encoding='utf-8')

sm=logging.StreamHandler()

#5、绑定logger对象与handler对象

logger1.addHandler(h1)

logger1.addHandler(h2)

logger1.addHandler(sm)

#6、绑定handler对象与formatter对象

h1.setFormatter(formatter1)

h2.setFormatter(formatter1)

sm.setFormatter(formatter2)

#7、设置日志级别:可以在两个关卡进行设置logger与handler

logger1.setLevel(10)

h1.setLevel(10)

h2.setLevel(10)

sm.setLevel(10)

logger1.info('Egon借给李杰100W')

日志模板:

########存放路径、日志#########

import os,json

add=os.path.dirname(os.path.dirname(__file__))

add_log=os.path.join(add,'log')

logfile_name = 'log.log'

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'

# 定义日志输出格式 结束

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

if not os.path.isdir(add_log):

os.mkdir(add_log)

# log文件的全路径

logfile_path = os.path.join(add_log, 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', # stream打印到屏幕

'formatter': 'simple'

},

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

'default': {

'level': 'DEBUG',

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

'formatter': 'standard',

'filename': logfile_path, # filename打印到日志文件

'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)传递

},

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值