-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[TB-5] Research how to setup a convenient logging practice in GCP #7
Comments
SlogРозглянувши варіант того, щоб писати всі логи в STDOUT і хай вже Cloud Run з ними розбирається, в нас залишається питання того, як ми будемо логувати Враховуючи що була пропозиція ввести структуроване логування я переглянув пакет ExamplesРозглянемо декілька варіантів логування: Не змінюючи кодlog.Infof("Starting...")
log.Debugf("Echo: [%s] %s", data.firstname, data.message)
log.Infof(
"[CALLBACK QUERY] username: %s, firstname: %s, id: %v",
data.lastname,
data.firstname,
data.userID,
)
log.Errorf("Echo message: %s", errors.New("sending message error")) Було
Стане
{"time":"2024-03-21T05:44:55.398180693+02:00","level":"INFO","msg":"Starting..."}
{"time":"2024-03-21T05:44:55.398231252+02:00","level":"DEBUG","msg":"Echo: [Andrii] Hello everyone!"}
{"time":"2024-03-21T05:44:55.398233953+02:00","level":"INFO","msg":"[CALLBACK QUERY] username: Derkach, firstname: Andrii, id: 123456789"}
{"time":"2024-03-21T05:44:55.398236202+02:00","level":"ERROR","msg":"Echo message: sending message error"}
{"time":"2024-03-21T05:44:55.39823831+02:00","level":"INFO","source":{"function":"main.(*slogger).Infof","file":"/home/andrsj/Files/tmp/log-slog/slog.go","line":30},"msg":"Starting..."}
{"time":"2024-03-21T05:44:55.398248406+02:00","level":"DEBUG","source":{"function":"main.(*slogger).Debugf","file":"/home/andrsj/Files/tmp/log-slog/slog.go","line":26},"msg":"Echo: [Andrii] Hello everyone!"}
{"time":"2024-03-21T05:44:55.398251886+02:00","level":"INFO","source":{"function":"main.(*slogger).Infof","file":"/home/andrsj/Files/tmp/log-slog/slog.go","line":30},"msg":"[CALLBACK QUERY] username: Derkach, firstname: Andrii, id: 123456789"}
{"time":"2024-03-21T05:44:55.398255075+02:00","level":"ERROR","source":{"function":"main.(*slogger).Errorf","file":"/home/andrsj/Files/tmp/log-slog/slog.go","line":34},"msg":"Echo message: sending message error"} Тут є проблема в тому, що ніякого профіту від структурованого логування ми не отримали, лише додали форматування в JSON, який пропонує нам Змінюючи кодЯ НАПОЛЯГАЮ на тому, щоб переписати логування на структуроване, без будь якого wrapper, так як ми можемо повністю закрити всі свої потреби через std Булоlog.Infof("Starting...")
log.Debugf("Echo: [%s] %s", data.firstname, data.message)
log.Infof(
"[CALLBACK QUERY] username: %s, firstname: %s, id: %v",
data.lastname,
data.firstname,
data.userID,
)
log.Errorf("Echo message: %s", errors.New("sending message error")) Станеlog.Info("Starting...")
log.Debug("Echo",
"first name", data.firstname,
"message", data.message,
)
log.Info("[CALLBACK QUERY]",
"last name", data.lastname,
"first name", data.firstname,
"userID", data.userID,
)
log.Error("Echo message", "error", errors.New("sending message error")) Output: {"time":"2024-03-21T06:19:12.131858068+02:00","level":"INFO","msg":"Starting..."}
{"time":"2024-03-21T06:19:12.131860116+02:00","level":"DEBUG","msg":"Echo","first name":"Andrii","message":"Hello everyone!"}
{"time":"2024-03-21T06:19:12.131862946+02:00","level":"INFO","msg":"[CALLBACK QUERY]","last name":"Derkach","first name":"Andrii","userID":123456789}
{"time":"2024-03-21T06:19:12.131866075+02:00","level":"ERROR","msg":"Echo message","error":"sending message error"} Модифікація логгераЯкщо нам треба буде якось модифікувати логер, нам буде достатньо тих можливостей, що пропонує std бібліотека Зміна
|
@vpakhuchyi @mymmrac дайте зелене світло на перепис format string -> structured record і я зроблю все сам Благо коду в нас не так вже і багато) |
@andrsj мені все ок, але тоді як ти і написав треба додати лінтери і узгодити формат ключів, я за |
Objective:
We want to have a convenient logging approach in our application that is aligned with GCP advice/recommendations. To achieve that we have to investigate the way how to setup/use it correctly.
Our application will be deployed in GCP (cloud functions/cloud run).
Acceptance criteria:
Useful links:
https://cloud.google.com/logging/docs/setup/go
https://pkg.go.dev/cloud.google.com/go/logging
https://cloud.google.com/logging/docs/reference/libraries#client-libraries-install-go
The text was updated successfully, but these errors were encountered: