Я могу напрямую отправлять записи журнала в Stackdriver с помощью google.cloud.logging.Теперь я пытаюсь подключить Python для «ведения журнала» к GCP Stackdriver, чтобы автоматически создавать журналы в Stackdriver всякий раз, когда Python использует «logging».У меня проблема с подключением.
Я получаю этот случай:
Записи временно сохраняются в Stackdriver, и их тоже можно получить, но они исчезаюткак только программа заканчиваетсяКажется, они хранятся в буфере, но не сохраняются в журналах Stackdriver.
часть кода:
import google.cloud.logging as gcp_logging
from google.oauth2 import service_account
cred= service_account.Credentials.from_service_account_file('credential/service/account/json/file')
client = gcp_logging.Client(project = <project-id>, credentials=cred)
import logging
client.setup_logging(log_level=logging.DEBUG)
py_logger = get_python_logger()
print("Making log entry here ...")
py_logger.debug("log entry by lib 'logging' through Stackdriver in logger module")
Выполнение кода:
Вывод выполняется в 4 этапа:
он извлек записи журнала из Stackdriver
Я попытался сделать запись журнала в Stackdriver через 'logging' на python *
itснова выбирает записи журнала
фильтрация извлеченных журналов на основе уровня
Я ожидал, что новая запись в журнале Python 'logging' будет извлечена изStackdriver.Но добавляются дополнительные записи о запросах соединения oauth2 и http.Это похоже на проблему с аутентификацией.Я проверил правила брандмауэра в GCP, он разрешает все входящие ips.
$python test.py
fetching log entries for logname: edudata-log ...
[2019-07-04 17:24:43.226848][WARNING] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:25:58.156544][WARNING] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:26:19.780465][WARNING] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:27:24.196522][INFO] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:27:35.216711][INFO] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:27:44.895962][DEBUG] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:27:58.220334][DEBUG] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 19:13:51.840192][INFO] log entry through module edu_logger called in test_edulogger.py
Making log entry here ...
log entry by lib 'logging' through Stackdriver in edulogger module
fetching log entries for logname: edudata-log ...
Making request: POST https://oauth2.googleapis.com/token
Making request: POST https://oauth2.googleapis.com/token
Starting new HTTPS connection (1): oauth2.googleapis.com:443
Starting new HTTPS connection (1): oauth2.googleapis.com:443
https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None
https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None
Submitted 1 logs
Submitted 4 logs
[2019-07-04 17:24:43.226848][WARNING] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:25:58.156544][WARNING] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:26:19.780465][WARNING] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:27:24.196522][INFO] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:27:35.216711][INFO] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:27:44.895962][DEBUG] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:27:58.220334][DEBUG] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 19:13:51.840192][INFO] log entry through module edu_logger called in test_edulogger.py
filtering log entries for logname = <logname>, level = DEBUG ...
Making request: POST https://oauth2.googleapis.com/token
Starting new HTTPS connection (1): oauth2.googleapis.com:443
https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None
Submitted 1 logs
Submitted 1 logs
[2019-07-04 17:27:44.895962][DEBUG] log entry through module edu_logger called in test_edulogger.py
[2019-07-04 17:27:58.220334][DEBUG] log entry through module edu_logger called in test_edulogger.py
Waiting up to 5 seconds.
Background thread exited gracefully.
Sent all pending logs.
Дополнительные сведения:
1. Установлен стековый драйвер
2. Я указал здесь учетные данные:
os.environment ["GOOGLE_APPLICATION_CREDENTIALS"] = SERVICE_ACCOUNT_FILE_PATH
3. Я хочу, чтобы выходные данные журнала были сохранены в журнале GCP Stackdriver