Код: Выделить всё
import logging
import google.cloud.logging
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
import dateutil.parser as dp
def get_logger(resource, name):
client = google.cloud.logging.Client()
client.setup_logging()
logger = logging.getLogger(str(name))
logger.handlers.clear()
logger_provider = LoggerProvider(resource=resource)
handler = LoggingHandler(level=logging.NOTSET, logger_provider=logger_provider)
logger.addHandler(handler)
return logger
resource_attributes ={"github.source": "github-exporter","workflow_run_id": GHA_RUN_ID}
resource_log = Resource(attributes=resource_attributes)
job_logger = get_logger(resource_log, "job_logger")
with open ("./logs/log1.txt") as f:
for line in f.readlines():
try:
line_to_add = line[29:-1].strip()
len_line_to_add = len(line_to_add)
timestamp_to_add = line[0:23]
if len_line_to_add > 0:
# Convert ISO 8601 to timestamp
try:
parsed_t = dp.isoparse(timestamp_to_add)
except ValueError as e:
print("Line does not start with a date. Skip for now")
continue
unix_timestamp = parsed_t.timestamp()*1000
extra_data = {
"log.timestamp":unix_timestamp,
"log.time":timestamp_to_add,
}
if line_to_add.lower().startswith("##[debug]"):
job_logger._log(level=logging.DEBUG,msg=line_to_add,extra=extra_data,args="")
else:
job_logger._log(level=logging.INFO,msg=line_to_add,extra=extra_data,args="")
except Exception as e:
print("Error exporting log line ERROR: ", e)
Снимок экрана из журналов Google Cloud Logs Explorer
Я прочитал
Дубликаты записей журнала ведения журнала в облаке Google на stackdriver в функции облака Google с использованием Python
и
Дубликаты записей журнала с ведением журнала Google Cloud Stackdriver кода Python в Kubernetes Engine
относительно
Код: Выделить всё
the client.setup_logging method sets up 2 handlers, a normal logging.StreamHandler and also a GCP-specific handler
Любые предложения будут очень полезны. Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/783 ... sdk-python