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

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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog