新手入门,在一个文件中引用其它文件定义的类报错:
定义Logger模块 ,文件名为Logger.py
# -*- coding:utf-8 -*-
'''
自定义日志封装类
返回logger类型对象,用于记录日志
'''
import os
import logging
import time
class Logger(object):
def __init__(self, loggername):
"""
指定保存日志的文件路径,日志级别,以及调用文件
将日志存入到指定的文件中
:param logger:
"""
# 创建一个logger
self.logger = logging.getLogger(loggername)
self.logger.setLevel(logging.DEBUG)
# 创建日志名称。
#rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
rq = loggername #传入日志参数
# os.getcwd()获取当前文件的路径,os.path.dirname()获取指定文件路径的上级路径 当前路径的下的logs日志文件夹
# log_path = os.path.dirname(os.getcwd()) + os.getcwd().split('/')[-1] + '/logs/'
log_path = os.getcwd() + '/logs/'
log_name = log_path + rq + '.log'
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler(log_name)
fh.setLevel(logging.INFO)
# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# 定义handler的输出格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 给logger添加handler
self.logger.addHandler(fh)
self.logger.addHandler(ch)
def getlog(self):
return self.logger
# 测试使用
# # 获取对象,并写入日志操作
# logger = Logger('test1.log').getlog()
# logger.info('log message foorbar')
# logger.debug('logkkkk message foorbar')
定义tmp.py 进行引用 测试
tmp.py文件
内容 :
# -*- coding:utf-8 -*-
import os
import logging
import logging.handlers
import Logger
#from Logger import Logger #引入对象类 从Logger模块导入Logger类
# 获取对象,并写入日志操作
#一个文件是一个模块名,在不同文件的引入,需要先引入模块名,创建对象名,然后再引用对象的变量或者是方法
# Logger.Logger('test1.log').getlog() 自定义模块名+对象名+方法名
#使用 logger = Logger('test1.log').getlog() 会报错:TypeError ,原因是引用的模块,并没有创建对象
logger = Logger.Logger('test1.log').getlog()
logger.info('log message foorbar')