所以我已经用头撞了一段时间了,我想在这里问一下。
是否可以在云函数中使用结构化日志记录?
在CF中日志和度量代理是不可用的,我希望在我们的StackDriver日志中有一些更丰富的数据(主要是为了利用一些基于日志的度量)。
有没有人知道在没有使用日志代理的额外机器的情况下,什么是可能的?
发布于 2021-02-12 13:36:51
我发布了这个社区wiki的答案,以使@Andrew提供的建议更加可见。这里回答了这个问题。请在下面找到解决方案摘要:
// global
const { Logging } = require("@google-cloud/logging");
const logging = new Logging();
const Log = logging.log("cloudfunctions.googleapis.com%2Fcloud-functions");
const LogMetadata = {
severity: "INFO",
type: "cloud_function",
labels: {
function_name: process.env.FUNCTION_TARGET,
project: process.env.GCP_PROJECT,
region: JSON.parse(process.env.FIREBASE_CONFIG).locationId
}
};
// per request
const data = { FOO: "BAR" };
const traceId = req.get("x-cloud-trace-context").split("/")[0];
const metadata = {
...LogMetadata,
severity: 'INFO',
trace: `projects/${process.env.GCLOUD_PROJECT}/traces/${traceId}`,
labels: {
execution_id: req.get("function-execution-id")
}
};
Log.write(Log.entry(metadata, data));severity的值可以找到这里。
DEFAULT (0) The log entry has no assigned severity level.
DEBUG (100) Debug or trace information.
INFO (200) Routine information, such as ongoing status or performance.
NOTICE (300) Normal but significant events, such as start up, shut down, or a configuration change.
WARNING (400) Warning events might cause problems.
ERROR (500) Error events are likely to cause problems.
CRITICAL (600) Critical events cause more severe problems or outages.
ALERT (700) A person must take an action immediately.
EMERGENCY (800) One or more systems are unusable.https://serverfault.com/questions/937896
复制相似问题