幕O_o城 2020-03-14 15:09 采纳率: 0%
浏览 1666

python 创建了一个公用的logging模块,其他模块调用,如何将多个模块的调用打印一个日志文件中

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日志中

  • 写回答

1条回答 默认 最新

  • 陈年椰子 2020-03-14 15:13
    关注

    那就不要搞这么多复杂的文件命名, 直接写一个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)
    

    日志用法
    图片说明

    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler