【Microsoft Azure】Azure Functions (Node.js)におけるcontext.logとconsole.log

こんばんは。今日は、Azure Functionsのロギングでつまづいたポイントについて、記録に残しておこうと思います。

問題

Node.jsのAzure Functionsで、ログを残そうとconsole.log(“XXXX”)を埋め込んでいたが、ログが出力されない。

<index.tsx/index.js>

・以下のような感じで、console.logでログを出力しようとした。

import { AzureFunction, Context, HttpRequest } from "@azure/functions"

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {

    console.log('HTTP trigger function processed a request.');


export default httpTrigger;

このコードを、Azure Portal上からテストしてみる。

あれえ・・・でない・・・

原因と解決方法

公式ドキュメントに書いてあった。

https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-reference-node?tabs=v2#write-trace-output-to-logs

トレース出力の書き込みには、console.log を使用しないでください。 console.log からの出力は関数アプリ レベルでキャプチャされるため、特定の関数呼び出しには関連付けられておらず、特定の関数のログには表示されません。 また、Functions ランタイムのバージョン 1.x では、console.log を使用したコンソールへの書き込みはサポートされていません。

公式Docより

ほう。なんかよくわからないけど、console.logは使ってはダメ、ということは分かった。Azure Functionsの仕組みに由来した、固有の制限なのでしょう。

と、次の疑問が。

contextってなんだ?と

はい、こちらも以下に書いてくれています。

https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-reference-node?tabs=v2#context-object

ランタイムは context オブジェクトを使用して、関数とランタイムとの間でデータを受け渡します。 バインドからのデータの読み取りと設定や、ログへの書き込みのために使用される context オブジェクトは常に、関数に渡される最初のパラメーターです。

公式Docより

うーん。よくわからん・・・

うん、わかったらまた更新しよう。

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US

Yuu113
初めまして。Yuu113と申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。