class Logger(logging.Logger):
def init(self, filename=None):
super(Logger, self).init__(self)
# 日志文件名
if filename is None:
__filename = './aaa.log'
self.filename = __filename
# 创建一个handler,用于写入日志文件 (每天生成1个,保留30天的日志)
# __fh = logging.handlers.TimedRotatingFileHandler(self.__filename, 'D', 1, 30)
__fh = logging.FileHandler(self.__filename, encoding='utf-8')
# __fh.suffix = "%Y%m%d.log"
__fh.setLevel(logging.DEBUG)
# 再创建一个handler,用于输出到控制台
__ch = logging.StreamHandler()
__ch.setLevel(logging.DEBUG)
# 定义handler的输出格式
__formatter = logging.Formatter(
'%(asctime)s %(levelname)s - %(filename)s [%(module)s.%(funcName)s]-[Line:%(lineno)d]-[thread:%(thread)s]-[process:%(process)s] %(message)s',
'%Y-%m-%d %H:%M:%S')
__fh.setFormatter(__formatter)
__ch.setFormatter(__formatter)
# 给logger添加handler
self.addHandler(__fh)
self.addHandler(__ch)
mysql.py
import Logger
main.py
import Logger
如何将mysql.py日志打印到main.py的日志中,mysql.py也是通用模块,logger如何写,才能不用关注公用模块日志输出到哪里,每次都可以直接输出到运行的.py日志中
那就不要搞这么多复杂的文件命名, 直接写一个LOG文件就行啦。 我的log 模块都不到10行。
在类里的部分定义
def save_log(self, log_file, log_msg):
# 保存日志
f_e = open(log_file, 'a', encoding='utf-8')
t_now = time.strftime('%Y-%m-%d %H:%M:%S', (time.localtime(time.time())))
f_e.write("\n{}\n{}".format(t_now, log_msg))
f_e.close()
def log(self, log_msg):
self.save_log('debug_log.log', log_msg)
def debug_log(self, log_msg):
self.save_log('debug_log.log', log_msg)
def error_log(self, log_msg):
self.save_log('error_log.log', log_msg)
日志用法