Python logging 按日期分割不成功?

是这样的,我前几天写了一个服务,这个服务每10分钟去查询所有的CPU占比率超过百分之10的程序,然后输出的log中。
这是我的log.py配置

class Log(object):
      '''日志类 '''
      def __init__(self, name):
            self.path = "/var/log/infinity/custom/"  # 定义日志存放路径
            self.filename = self.path + rq + "_custom_monitor" + ".log"    # 日志文件名称
            self.name = name    # 为%(name)s赋值
            self.logger = logging.getLogger(self.name)
            # 控制日志文件中记录级别
            self.logger.setLevel(logging.INFO)
            # 控制输出到控制台日志格式、级别
            # self.ch = logging.StreamHandler()
            # 日志保留7天,一天保存一个文件
            self.fh = TimedRotatingFileHandler(self.filename, when='D', interval=1, backupCount=7)
            # 删除设置
            self.fh.suffix = '%Y-%m-%d_%H-%M.log'
            self.fh.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}.log$")
            # 定义日志文件中格式
            self.formatter = logging.Formatter('%(asctime)s - %(levelname)s -   %(name)s[line:%(lineno)d] - %(message)s')
            self.fh.setFormatter(self.formatter)
            self.logger.addHandler(self.fh)
            # self.logger.addHandler(self.ch)

      def info(self, msg):
          self.logger.info(msg)

      def warning(self, msg):
          self.logger.warning(msg)

      def error(self, msg):
          self.logger.error(msg)

      def debug(self, msg):
          self.logger.debug(msg)

      def close(self):
          self.logger.removeHandler(self.fh)

这是我的调用代码:

log.info("\n进程占用内存\n" + check_process_memory(key))

问题就来了,非常奇怪,我昨天启动的监控程序,生成了3月22号的log日志,但是,今天我检查,发现没有生成3月23号的日志程序,还是依旧记录在3月22的日志中。
我一度怀疑自己写法有问题,但是我切换了按分钟分割日志就分割成功了,按天数就有问题,请问有谁也遇到过这样的情况么?如何处理?

阅读 9.3k
2 个回答

你写的没看出来问题啊,我怀疑你服务器的时间是不是没到23号,在终端执行date,我猜你服务器时间可能是utc时间?

参考这个https://www.cnblogs.com/qhlbl...
'D' 是+1天,改成when='MIDNIGHT'是你想要的效果

新手上路,请多包涵

楼主你好,我用的你的脚本在我本地运行,我是设置的分钟,我这边是分钟切换的时候创建文件失败,楼主能指教下吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题