代码之家  ›  专栏  ›  技术社区  ›  Vojtěch

阻止Kubernetes吊舱的日志记录被停止

  •  2
  • Vojtěch  · 技术社区  · 6 年前

    一旦tomcat收到stop命令,它就开始停止应用程序。但是,仍然有任务正在运行,并且丢失与数据库的连接会导致抛出大量异常。这没关系,因为应用程序不再执行任何操作。我的问题是,这“垃圾邮件”我们的日志与致命的错误,它是很难区分哪些异常是相关的,哪些只是由于应用程序被停止。

    java.lang.IllegalStateException异常:非法访问:此web应用程序 实例已停止。无法加载 [sun.reflect.NativeMethodAccessorImpl附件]. 下面的堆栈跟踪是 出于调试目的以及尝试终止

    有没有办法阻止记录此类异常?一旦发出停止信号,是否可以立即停止记录?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Miguel Medina    6 年前

    您应该使用fluentd之类的工具来管理日志记录,然后使用 exclude filter 为您的例外日志。kubernetes或容器引擎无法过滤标准输出上显示的内容。

        2
  •  0
  •   captainchhala    6 年前

    kubernetes提供了对pod的生命周期回调来处理此类场景,您可以在pod关闭时执行自定义脚本来删除日志 PreStop

    apiVersion: v1
    kind: Pod
    metadata:
      name: lifecycle-demo
    spec:
      containers:
      - name: lifecycle-demo-container
        image: nginx
        lifecycle:
          preStop:
            exec:
              command: [" your custom command to delete log entries"]