こんばんは。今日は、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上からテストしてみる。
あれえ・・・でない・・・
原因と解決方法
公式ドキュメントに書いてあった。
トレース出力の書き込みには、
公式Docよりconsole.log
を使用しないでください。console.log
からの出力は関数アプリ レベルでキャプチャされるため、特定の関数呼び出しには関連付けられておらず、特定の関数のログには表示されません。 また、Functions ランタイムのバージョン 1.x では、console.log
を使用したコンソールへの書き込みはサポートされていません。
ほう。なんかよくわからないけど、console.logは使ってはダメ、ということは分かった。Azure Functionsの仕組みに由来した、固有の制限なのでしょう。
と、次の疑問が。
contextってなんだ?と
はい、こちらも以下に書いてくれています。
ランタイムは
公式Docよりcontext
オブジェクトを使用して、関数とランタイムとの間でデータを受け渡します。 バインドからのデータの読み取りと設定や、ログへの書き込みのために使用されるcontext
オブジェクトは常に、関数に渡される最初のパラメーターです。
うーん。よくわからん・・・
うん、わかったらまた更新しよう。
おしまい
コメントを残す