async def handle_container_logs(k8s_manager: AsyncK8SManager, pod: V1Pod, container_name: str, **params) -> List[V1Log]: resp = None try: resp = await k8s_manager.k8s_api.read_namespaced_pod_log( pod.metadata.name, k8s_manager.namespace, container=container_name, timestamps=True, **params, ) except ApiException: pass if not resp: return [] logs = [] for log_line in resp.split("\n"): if log_line: logs.append( V1Log.process_log_line( value=log_line, node=pod.spec.node_name, pod=pod.metadata.name, container=container_name, )) return logs
async def handle_container_logs(): resp = None try: resp = await k8s_manager.k8s_api.read_namespaced_pod_log( pod.metadata.name, k8s_manager.namespace, container=container.name, timestamps=True, **params, ) except ApiException: pass if not resp: return None, None for log_line in resp.split("\n"): if log_line: logs.append( V1Log.process_log_line( value=log_line, node=pod.spec.node_name, pod=pod.metadata.name, container=container.name, ) )
def process_log_line(log_line: str): if not isinstance(log_line, str): log_line = log_line.decode("utf-8") return V1Log.process_log_line(value=log_line.strip(), node=None, pod=None, container=None)
def format_record(self, record): message = "" if record.msg: message = record.msg % record.args return V1Log.process_log_line( value=message, timestamp=to_datetime(record.created), node=self._node, pod=self._pod, container=self._container, )
def format_record(self, record): return V1Log(value=record.msg)