Écrire des journaux structurés
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Écrit des entrées de journal structurées avec une corrélation des journaux de requêtes à l'aide de bibliothèques courantes.
En savoir plus
Pour obtenir une documentation détaillée incluant cet exemple de code, consultez les articles suivants :
Exemple de code
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],[],[],[],null,["# Write structured logs\n\nWrites structured log entries with request log correlation using common libraries.\n\nExplore further\n---------------\n\n\nFor detailed documentation that includes this code sample, see the following:\n\n- [Logging and viewing logs](/anthos/run/archive/docs/logging)\n- [Logging and viewing logs in Cloud Run](/run/docs/logging)\n- [Logging and viewing logs in Knative serving](/kubernetes-engine/enterprise/knative-serving/docs/logging)\n- [View and write Cloud Run function logs](/functions/1stgendocs/monitoring/logging)\n\nCode sample\n-----------\n\n### Go\n\n\nTo authenticate to Cloud Run, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n\n func init() {\n \t// Disable log prefixes such as the default timestamp.\n \t// Prefix text prevents the message from being parsed as JSON.\n \t// A timestamp is added when shipping logs to Cloud Logging.\n \tlog.SetFlags(0)\n }\n\n func indexHandler(w http.ResponseWriter, r *http.Request) {\n \t// Uncomment and populate this variable in your code:\n \t// projectID = \"The project ID of your Cloud Run service\"\n\n \t// Derive the traceID associated with the current request.\n \tvar trace string\n \tif projectID != \"\" {\n \t\ttraceHeader := r.Header.Get(\"X-Cloud-Trace-Context\")\n \t\ttraceParts := strings.Split(traceHeader, \"/\")\n \t\tif len(traceParts) \u003e 0 && len(traceParts[0]) \u003e 0 {\n \t\t\ttrace = fmt.Sprintf(\"projects/%s/traces/%s\", projectID, traceParts[0])\n \t\t}\n \t}\n\n \tlog.Println(Entry{\n \t\tSeverity: \"NOTICE\",\n \t\tMessage: \"This is the default display field.\",\n \t\tComponent: \"arbitrary-property\",\n \t\tTrace: trace,\n \t})\n\n \tfmt.Fprintln(w, \"Hello Logger!\")\n }\n\n### Java\n\n\nTo authenticate to Cloud Run, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n // Build structured log messages as an object.\n Object globalLogFields = null;\n\n // Add log correlation to nest all log messages beneath request log in Log Viewer.\n // TODO(developer): delete this code if you're creating a Cloud\n // Function and it is *NOT* triggered by HTTP.\n String traceHeader = req.headers(\"x-cloud-trace-context\");\n if (traceHeader != null && project != null) {\n String trace = traceHeader.split(\"/\")[0];\n globalLogFields =\n kv(\n \"logging.googleapis.com/trace\",\n String.format(\"projects/%s/traces/%s\", project, trace));\n }\n // -- End log correlation code --\n\n // Create a structured log entry using key value pairs.\n // For instantiating the \"logger\" variable, see\n // https://cloud.google.com/run/docs/logging#run_manual_logging-java\n logger.error(\n \"This is the default display field.\",\n kv(\"component\", \"arbitrary-property\"),\n kv(\"severity\", \"NOTICE\"),\n globalLogFields);\n\n### Node.js\n\n\nTo authenticate to Cloud Run, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n\n // Uncomment and populate this variable in your code:\n // const project = 'The project ID of your function or Cloud Run service';\n\n // Build structured log messages as an object.\n const globalLogFields = {};\n\n // Add log correlation to nest all log messages beneath request log in Log Viewer.\n // (This only works for HTTP-based invocations where `req` is defined.)\n if (typeof req !== 'undefined') {\n const traceHeader = req.header('X-Cloud-Trace-Context');\n if (traceHeader && project) {\n const [trace] = traceHeader.split('/');\n globalLogFields['logging.googleapis.com/trace'] =\n `projects/${project}/traces/${trace}`;\n }\n }\n\n // Complete a structured log entry.\n const entry = Object.assign(\n {\n severity: 'NOTICE',\n message: 'This is the default display field.',\n // Log viewer accesses 'component' as 'jsonPayload.component'.\n component: 'arbitrary-property',\n },\n globalLogFields\n );\n\n // Serialize to a JSON string and output.\n console.log(JSON.stringify(entry));\n\n### Python\n\n\nTo authenticate to Cloud Run, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n # Uncomment and populate this variable in your code:\n # PROJECT = 'The project ID of your Cloud Run service';\n\n # Build structured log messages as an object.\n global_log_fields = {}\n\n # Add log correlation to nest all log messages.\n # This is only relevant in HTTP-based contexts, and is ignored elsewhere.\n # (In particular, non-HTTP-based Cloud Functions.)\n request_is_defined = \"request\" in globals() or \"request\" in locals()\n if request_is_defined and request:\n trace_header = request.headers.get(\"X-Cloud-Trace-Context\")\n\n if trace_header and PROJECT:\n trace = trace_header.split(\"/\")\n global_log_fields[\n \"logging.googleapis.com/trace\"\n ] = f\"projects/{PROJECT}/traces/{trace[0]}\"\n\n # Complete a structured log entry.\n entry = dict(\n severity=\"NOTICE\",\n message=\"This is the default display field.\",\n # Log viewer accesses 'component' as jsonPayload.component'.\n component=\"arbitrary-property\",\n **global_log_fields,\n )\n\n print(json.dumps(entry))\n\nWhat's next\n-----------\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=cloudrun)."]]