$lang['tuto'] = "ട്യൂട്ടോറിയലുകൾ"; ?> ലോഗ്‌സ്

ലോഗ്‌സ് വർക്ക്‌സ്‌പെയ്‌സിൽ അസൂർ ഫംഗ്‌ഷൻ വിവര ലോഗുകൾ കാണാത്തത് എന്തുകൊണ്ട്?

ലോഗ്‌സ് വർക്ക്‌സ്‌പെയ്‌സിൽ അസൂർ ഫംഗ്‌ഷൻ വിവര ലോഗുകൾ കാണാത്തത് എന്തുകൊണ്ട്?
References for Azure Function Logging Solutions

ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകളിൽ നഷ്‌ടമായ അസുർ ഫംഗ്‌ഷൻ ലോഗുകൾ ട്രബിൾഷൂട്ട് ചെയ്യുന്നു

അസൂർ ഫംഗ്‌ഷനുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നത് പലപ്പോഴും നല്ല എണ്ണ പുരട്ടിയ ഓട്ടോമേഷൻ എഞ്ചിൻ നിർമ്മിക്കുന്നത് പോലെയാണ്. എന്നാൽ നിങ്ങളുടെ അപ്ലിക്കേഷൻ ഇൻസൈറ്റുകൾ വർക്ക്‌സ്‌പെയ്‌സിൽ നിന്ന് ചില നിർണായക ലോഗുകൾ അപ്രത്യക്ഷമാകുമ്പോൾ എന്ത് സംഭവിക്കും? 🤔 ടൈമർ ട്രിഗർ അസൂർ ഫംഗ്‌ഷൻ വികസിപ്പിക്കുന്നതിനിടയിൽ ഞാൻ അടുത്തിടെ നേരിട്ട ഒരു വെല്ലുവിളിയാണിത്. അസൂർ പോർട്ടൽ ലോഗ് കൺസോളിൽ പൂർണ്ണമായി പ്രവർത്തിക്കുന്ന എൻ്റെ ഇൻഫർമേഷൻ-ലെവൽ ലോഗുകൾ ലോഗ്സ് വർക്ക്‌സ്‌പെയ്‌സിൽ നിഗൂഢമായി ഇല്ലായിരുന്നു.

ആദ്യം, എല്ലാം ശരിയായി ക്രമീകരിച്ചിട്ടുണ്ടെന്ന് ഞാൻ അനുമാനിച്ചു. എല്ലാത്തിനുമുപരി, എൻ്റെ ഫംഗ്‌ഷൻ ആപ്പ് സൃഷ്‌ടിക്കുന്ന സമയത്ത് ഞാൻ ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ സജ്ജീകരിച്ചിരുന്നു, ടെലിമെട്രി സജ്ജീകരണം ബോക്‌സിന് പുറത്ത് പ്രവർത്തിക്കുന്നതായി തോന്നുന്നു. ഒരു ഡെവലപ്പർ എന്ന നിലയിൽ, വിവര ലോഗുകൾ എവിടെയും കണ്ടെത്താനാകാത്ത സമയത്ത് മുന്നറിയിപ്പ്, പിശക് ലോഗുകൾ ശരിയായി ദൃശ്യമാകുന്നതിനേക്കാൾ അമ്പരപ്പിക്കുന്ന മറ്റൊന്നില്ല. അവർ എവിടെയാണ് ഒളിച്ചിരുന്നത്?

ഒരു വെബ് ആപ്ലിക്കേഷൻ ഡീബഗ്ഗ് ചെയ്യുമ്പോൾ സമാനമായ ഒരു നിമിഷം ഈ പ്രശ്നം എന്നെ ഓർമ്മിപ്പിച്ചു. പിശക് ലോഗുകൾ "എന്നെ ശരിയാക്കൂ!" സൂക്ഷ്മമായ വിവര-തല രേഖകൾ റഡാറിന് കീഴിൽ തെന്നിമാറി. നഷ്‌ടമായ ഒരു പസിൽ പീസ് തിരയുന്നത് പോലെയാണ് ഇത് - അത് ഉണ്ടെന്ന് അറിയാമെങ്കിലും ചിതയിൽ അത് കാണുന്നില്ല. 🧩 Azure-ൻ്റെ host.json, ടെലിമെട്രി ക്രമീകരണങ്ങൾ എന്നിവ ഇവിടെ പലപ്പോഴും ഒരു പങ്കുവഹിക്കുന്നു.

ഈ ലേഖനത്തിൽ, ഈ പ്രശ്നത്തിൻ്റെ മൂലകാരണവും ഘട്ടം ഘട്ടമായി അത് എങ്ങനെ പരിഹരിക്കാമെന്നും ഞാൻ തകർക്കും. host.json കോൺഫിഗറേഷനുകൾ മുതൽ ലോഗ് ലെവൽ ത്രെഷോൾഡുകൾ പരിശോധിക്കുന്നത് വരെ, പരിഹാരത്തിലൂടെ ഞാൻ നിങ്ങളെ നയിക്കും. നഷ്‌ടമായ വിവര ലോഗുകൾ നിങ്ങളുടെ ലോഗ്‌സ് വർക്ക്‌സ്‌പെയ്‌സിലേക്കുള്ള വഴി കണ്ടെത്തുന്നുവെന്ന് ഉറപ്പാക്കാം.

കമാൻഡ് ഉപയോഗത്തിൻ്റെ ഉദാഹരണം
ConfigureFunctionsWorkerDefaults() Azure Functions വർക്കർ പൈപ്പ്‌ലൈൻ ആരംഭിക്കുകയും കോൺഫിഗർ ചെയ്യുകയും ചെയ്യുന്നു. മിഡിൽവെയറും സേവനങ്ങളും അസൂർ ഫംഗ്‌ഷനുകൾ നടപ്പിലാക്കുന്നതിനായി ശരിയായി സജ്ജീകരിച്ചിട്ടുണ്ടെന്ന് ഇത് ഉറപ്പാക്കുന്നു.
Configure<LoggerFilterOptions>() വിവരങ്ങൾ, മുന്നറിയിപ്പ് അല്ലെങ്കിൽ പിശക് പോലുള്ള ലോഗ് ലെവലിനെ അടിസ്ഥാനമാക്കി ലോഗുകൾ ഫിൽട്ടർ ചെയ്യാൻ ഉപയോഗിക്കുന്നു. ഇത് ആവശ്യമുള്ള ലോഗ് ലെവലുകൾ മാത്രം പ്രോസസ്സ് ചെയ്യുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
services.AddApplicationInsightsTelemetryWorkerService() തൊഴിലാളി സേവനങ്ങൾക്കായുള്ള ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ രജിസ്റ്റർ ചെയ്യുന്നു. എച്ച്‌ടിടിപി-ട്രിഗർ ചെയ്യാത്ത സന്ദർഭങ്ങളിൽ അസൂർ ഫംഗ്‌ഷനുകൾക്കായി ഇത് ടെലിമെട്രി ശേഖരണവും ലോഗിംഗും പ്രാപ്‌തമാക്കുന്നു.
options.MinLevel = LogLevel.Information ഏറ്റവും കുറഞ്ഞ ലോഗ് ലെവൽ ത്രെഷോൾഡ് സജ്ജമാക്കുന്നു. ഉദാഹരണത്തിന്, വിവരങ്ങൾ, മുന്നറിയിപ്പ്, പിശക് നിലകളുടെ ലോഗുകൾ ക്യാപ്‌ചർ ചെയ്യപ്പെടുന്നുവെന്ന് 'വിവരങ്ങൾ' ഉറപ്പാക്കുന്നു.
ConfigureServices() ഇഷ്‌ടാനുസൃത സേവനങ്ങൾ ചേർക്കുന്നതിനോ ലോഗിംഗ്, അപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ അല്ലെങ്കിൽ ഏതെങ്കിലും DI കണ്ടെയ്‌നറുമായി ബന്ധപ്പെട്ട ഘടകങ്ങളോ പോലുള്ള ഡിപൻഡൻസികൾ കോൺഫിഗർ ചെയ്യുന്നതിനോ ഒരു രീതി നൽകുന്നു.
samplingSettings: { isEnabled: false } ഇൻഫർമേഷൻ ലെവൽ ലോഗുകൾ ഉൾപ്പെടെ എല്ലാ ലോഗുകളും ഫിൽട്ടർ ചെയ്യപ്പെടാതെ ക്യാപ്‌ചർ ചെയ്യപ്പെടുന്നുവെന്ന് ഉറപ്പാക്കാൻ ടെലിമെട്രി സാമ്പിൾ അപ്രാപ്‌തമാക്കുന്നു.
host.Run() അസൂർ ഫംഗ്‌ഷൻസ് വർക്കർ പ്രോസസ്സ് പ്രവർത്തിപ്പിക്കുന്നതിന് കോൺഫിഗർ ചെയ്‌ത ഹോസ്റ്റ് എക്‌സിക്യൂട്ട് ചെയ്യുകയും ഇൻകമിംഗ് ഇവൻ്റുകൾക്കോ ​​ട്രിഗറുകൾക്കോ ​​വേണ്ടി കേൾക്കാൻ തുടങ്ങുകയും ചെയ്യുന്നു.
builder.SetMinimumLevel(LogLevel.Information) വിവര തലത്തിലും അതിനു മുകളിലും ഉള്ള വിശദമായ ലോഗുകൾ പ്രോസസ് ചെയ്യപ്പെടുന്നുവെന്ന് ഉറപ്പാക്കാൻ ലോഗർ കോൺഫിഗറേഷനായി ഏറ്റവും കുറഞ്ഞ ലോഗ് ലെവൽ വ്യക്തമായി സജ്ജീകരിക്കുന്നു.
Assert.True(condition, message) ഒരു വ്യവസ്ഥ ശരിയാണോ എന്ന് പരിശോധിക്കാൻ യൂണിറ്റ് ടെസ്റ്റിംഗിൽ ഉപയോഗിക്കുന്നു. ഈ സാഹചര്യത്തിൽ, വിവര ലോഗുകൾ വിജയകരമായി ക്യാപ്‌ചർ ചെയ്‌തതായി ഇത് സാധൂകരിക്കുന്നു.
LogInformation("Message") ഒരു വിവര സന്ദേശം ലോഗ് ചെയ്യുന്നു. അസൂർ ഫംഗ്‌ഷനുകളിൽ ഡീബഗ്ഗ് ചെയ്യുന്നതിനും നിർണായകമല്ലാത്ത പ്രവർത്തനങ്ങൾ നിരീക്ഷിക്കുന്നതിനും ഇത് നിർണായകമാണ്.

നഷ്‌ടമായ അസൂർ ഫംഗ്‌ഷൻ ലോഗുകളും അത് എങ്ങനെ പരിഹരിക്കാമെന്നും മനസ്സിലാക്കുക

മുമ്പ് നൽകിയ സ്‌ക്രിപ്റ്റുകൾ ഒരു പൊതു പ്രശ്നം പരിഹരിക്കാൻ ലക്ഷ്യമിടുന്നു അസൂർ പോർട്ടൽ ലോഗ് കൺസോളിൽ കാണിക്കുന്നുണ്ടെങ്കിലും, ഒരു അസൂർ ഫംഗ്‌ഷൻ സൃഷ്‌ടിച്ചത് ലോഗ്‌സ് വർക്ക്‌സ്‌പെയ്‌സിൽ ദൃശ്യമാകില്ല. host.json ഫയലിലെ തെറ്റായ കോൺഫിഗറേഷൻ, മതിയായ ടെലിമെട്രി ക്രമീകരണങ്ങൾ, അല്ലെങ്കിൽ ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകളുടെ സംയോജനത്തിലെ പ്രശ്നങ്ങൾ എന്നിവ കാരണം ഈ പൊരുത്തക്കേട് പലപ്പോഴും സംഭവിക്കാറുണ്ട്. തുടങ്ങിയ കമാൻഡുകൾ ഉപയോഗിച്ച് ഒപ്പം , ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ പ്രതീക്ഷിച്ചതുപോലെ ലോഗുകൾ ക്യാപ്‌ചർ ചെയ്യുന്നുവെന്ന് ഞങ്ങൾ ഉറപ്പാക്കുന്നു. ഈ സ്ക്രിപ്റ്റുകൾ ടെലിമെട്രി ഡാറ്റ ശേഖരിക്കുന്നതിനും കൈകാര്യം ചെയ്യുന്നതിനുമുള്ള ശക്തമായ അടിത്തറ സ്ഥാപിക്കുന്നു.

ആദ്യം, Program.cs-ലെ `HostBuilder`, Azure Function worker environment സജ്ജീകരിക്കുന്നു. രീതി Azure ഫംഗ്‌ഷനുകൾക്ക് ആവശ്യമായ എല്ലാ മിഡിൽവെയറുകളും ആരംഭിച്ചിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുന്നു. ഇഷ്‌ടാനുസൃത ലോഗിംഗും ഡിപൻഡൻസി ഇഞ്ചക്ഷൻ കോൺഫിഗറേഷനും ഇത് അനുവദിക്കുന്നു. അടുത്തതായി, AddApplicationInsightsTelemetryWorkerService() ഉപയോഗിച്ച് ഞങ്ങൾ ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ വ്യക്തമായി രജിസ്റ്റർ ചെയ്യുന്നു. HTTP-ട്രിഗർ ചെയ്യാത്ത അസൂർ ഫംഗ്‌ഷനുകൾക്കായി ടെലിമെട്രി ശേഖരണം ശരിയായി ക്രമീകരിച്ചിട്ടുണ്ടെന്ന് ഈ ഘട്ടം ഉറപ്പാക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു ടൈമർ ട്രിഗർ ഫംഗ്‌ഷൻ ഡീബഗ്ഗിംഗ് ചെയ്യുന്നത് സങ്കൽപ്പിക്കുക: ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ ഇല്ലാതെ, പ്രകടനം ട്രാക്കുചെയ്യുന്നതും പ്രശ്നങ്ങൾ തിരിച്ചറിയുന്നതും സ്വമേധയാലുള്ളതും സമയമെടുക്കുന്നതുമായ പ്രക്രിയയായി മാറുന്നു. 🔧

ഏത് ലോഗ് ലെവലുകൾ ക്യാപ്‌ചർ ചെയ്യണമെന്ന് നിയന്ത്രിക്കുന്നതിൽ host.json ഫയൽ ഒരു പ്രധാന പങ്ക് വഹിക്കുന്നു. സ്ഥിരസ്ഥിതി, ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ എന്നീ വിഭാഗങ്ങളിൽ `ലോഗ്‌ലെവൽ` വിവരങ്ങൾ ആയി സജ്ജീകരിക്കുന്നതിലൂടെ, വിവര-തല ലോഗുകൾ പ്രോസസ്സ് ചെയ്യേണ്ടതാണെന്ന് ഞങ്ങൾ വ്യക്തമായി നിർവ്വചിക്കുന്നു. എന്നിരുന്നാലും, samplingSettings പ്രോപ്പർട്ടി ചിലപ്പോൾ ലോഗുകൾ ഫിൽട്ടർ ചെയ്തേക്കാം, ഇത് ലോഗ്‌സ് വർക്ക്‌സ്‌പെയ്‌സിലെ എൻട്രികൾ നഷ്‌ടപ്പെടുന്നതിന് ഇടയാക്കും. സാമ്പിളിംഗ് പ്രവർത്തനരഹിതമാക്കുന്നതിലൂടെ (`"isEnabled": false`), വിവര ലോഗുകൾ ഉൾപ്പെടെ എല്ലാ ടെലിമെട്രി ഡാറ്റയും ക്യാപ്‌ചർ ചെയ്‌തതായി ഞങ്ങൾ ഉറപ്പാക്കുന്നു. ചെറിയ വിശദാംശങ്ങൾ പോലും മൂലകാരണം വെളിപ്പെടുത്തിയേക്കാവുന്ന ഉൽപ്പാദന പ്രശ്നങ്ങൾ പരിഹരിക്കുമ്പോൾ ഇത് വളരെ പ്രധാനമാണ്. തെറ്റായി ക്രമീകരിച്ച ഷെഡ്യൂളർ കണ്ടെത്തുന്നതിന് ഒരു ചെറിയ ലോഗ് ഇൻഫർമേഷൻ സന്ദേശം സഹായിച്ച ഒരു സാഹചര്യം ഒരിക്കൽ ഞാൻ അഭിമുഖീകരിച്ചു. 🎯

അവസാനമായി, യൂണിറ്റ് ടെസ്റ്റ് സ്‌ക്രിപ്റ്റ്, വിവിധ തലങ്ങളിലുള്ള ലോഗുകൾ-വിവരങ്ങൾ, മുന്നറിയിപ്പ്, പിശക് എന്നിവ ശരിയായി പുറത്തുവിടുകയും ക്യാപ്‌ചർ ചെയ്യുകയും ചെയ്യുന്നു. ഉപയോഗിക്കുന്നത് , ലോഗർ എല്ലാ ലോഗുകളും ആവശ്യമുള്ള ത്രെഷോൾഡിലോ അതിനു മുകളിലോ പ്രോസസ്സ് ചെയ്യുന്നുവെന്ന് ഞങ്ങൾ ഉറപ്പാക്കുന്നു. ഞങ്ങളുടെ ഉദാഹരണത്തിൽ, വ്യക്തമായി കോൺഫിഗർ ചെയ്യുമ്പോൾ വിവര ലോഗുകൾ ദൃശ്യമാകുമെന്ന് ഞങ്ങൾ സാധൂകരിക്കുന്നു. ഇതുപോലുള്ള യൂണിറ്റ് ടെസ്റ്റുകൾ എഴുതുന്നത്, ലോഗിംഗ് സ്വഭാവം പരിതസ്ഥിതികളിലുടനീളം സ്ഥിരതയുള്ളതാണെന്ന് ഉറപ്പാക്കുന്നു, വിന്യാസ സമയത്ത് ആശ്ചര്യങ്ങൾ തടയുന്നു. നഷ്‌ടമായ അസൂർ ഫംഗ്‌ഷൻ ലോഗുകൾ പരിഹരിക്കുന്നതിനും നിങ്ങളുടെ ക്ലൗഡ് ആപ്ലിക്കേഷനുകളിൽ ടെലിമെട്രി ശേഖരം ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിനും ഈ സ്‌ക്രിപ്റ്റുകൾ ഒരു സമഗ്രമായ പരിഹാരം നൽകുന്നു.

ലോഗ്‌സ് വർക്ക്‌സ്‌പെയ്‌സിൽ അസൂർ ഫംഗ്‌ഷൻ ലോഗുകൾ പ്രത്യക്ഷപ്പെടുന്നുവെന്ന് ഉറപ്പാക്കുന്നു

ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകളുടെ ശരിയായ കോൺഫിഗറേഷൻ ഉറപ്പാക്കിക്കൊണ്ട്, നഷ്‌ടമായ ഇൻഫർമേഷൻ ലോഗുകളുടെ പ്രശ്‌നം പരിഹരിക്കുന്നതിനുള്ള ഒരു C# ബാക്ക്-എൻഡ് സൊല്യൂഷൻ ഇതാ.

// Solution 1: Proper Host Configuration and Log Filtering
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
public class Program
{
    public static void Main(string[] args)
    {
        var host = new HostBuilder()
            .ConfigureFunctionsWorkerDefaults()
            .ConfigureServices(services =>
            {
                services.AddApplicationInsightsTelemetryWorkerService();
                services.Configure<LoggerFilterOptions>(options =>
                {
                    options.MinLevel = LogLevel.Information;
                });
            })
            .Build();
        host.Run();
    }
}

ശരിയായ ലോഗ് ലെവൽ രജിസ്ട്രേഷൻ ഉറപ്പാക്കാൻ കോൺഫിഗറേഷൻ അവലോകനം ചെയ്യുന്നു

host.json, Application Insights ലോഗ് ലെവലുകൾ വിന്യസിക്കുന്നുവെന്ന് ഉറപ്പാക്കാൻ കോൺഫിഗറേഷൻ ഫയൽ സജ്ജീകരണം.

// host.json Configuration
{
  "version": "2.0",
  "logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Function": "Information"
    },
    "applicationInsights": {
      "LogLevel": {
        "Default": "Information"
      },
      "samplingSettings": {
        "isEnabled": false
      }
    }
  }
}

ഇതര: അസൂർ ഫംഗ്‌ഷൻ കോഡിൽ നിർദ്ദിഷ്ട ലോഗ് ലെവലുകൾ ഫിൽട്ടർ ചെയ്യുന്നു

വ്യത്യസ്‌ത തലങ്ങൾക്കായി ലോഗുകൾ വ്യക്തമായി ഫിൽട്ടർ ചെയ്യുന്നതിനും പുറത്തുവിടുന്നതിനുമുള്ള സി# സ്‌ക്രിപ്റ്റ്.

using Microsoft.Extensions.Logging;
public class MyFunction
{
    private readonly ILogger _logger;
    public MyFunction(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger<MyFunction>();
    }
    public void Run()
    {
        _logger.LogInformation("Executing Information level log.");
        _logger.LogWarning("This is a Warning level log.");
        _logger.LogError("This is an Error level log.");
    }
}

ലോഗ് ലെവൽ കോൺഫിഗറേഷനായുള്ള യൂണിറ്റ് ടെസ്റ്റിംഗ്

വിവര തലത്തിലുള്ള ലോഗുകൾ ശരിയായി ക്യാപ്‌ചർ ചെയ്‌തിട്ടുണ്ടോയെന്ന് സാധൂകരിക്കാനുള്ള ഒരു ലളിതമായ യൂണിറ്റ് ടെസ്റ്റ്.

using Xunit;
using Microsoft.Extensions.Logging;
public class LogTests
{
    [Fact]
    public void VerifyInformationLogsAreCaptured()
    {
        var loggerFactory = LoggerFactory.Create(builder =>
        {
            builder.AddConsole();
            builder.SetMinimumLevel(LogLevel.Information);
        });
        var logger = loggerFactory.CreateLogger("TestLogger");
        logger.LogInformation("This is a test Information log.");
        Assert.True(true, "Information log captured successfully.");
    }
}

ടെലിമെട്രി ഡാറ്റ പര്യവേക്ഷണം ചെയ്തുകൊണ്ട് നഷ്‌ടമായ അസൂർ ഫംഗ്‌ഷൻ ലോഗുകൾ പരിഹരിക്കുന്നു

ലോഗ്‌സ് വർക്ക്‌സ്‌പെയ്‌സിൽ ദൃശ്യമാകാത്ത അസൂർ ഫംഗ്‌ഷൻ ലോഗുകളുടെ മറ്റൊരു നിർണായക വശം ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ ഉപയോഗിക്കുന്ന ടെലിമെട്രി ചാനൽ കോൺഫിഗറേഷൻ ഉൾക്കൊള്ളുന്നു. സ്ഥിരസ്ഥിതിയായി, Azure ഫംഗ്‌ഷനുകൾ അപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ SDK ഉപയോഗിക്കുന്നു, അത് ടെലിമെട്രി എൻഡ്‌പോയിൻ്റിലേക്ക് അയയ്‌ക്കുന്നതിന് മുമ്പ് ലോഗുകൾ ബഫർ ചെയ്യുന്നു. എന്നിരുന്നാലും, ഈ ബഫറിംഗിന്, ഇൻഫർമേഷൻ-ലെവൽ ലോഗുകൾ പോലുള്ള ചില ലോഗ് എൻട്രികൾ സാംപ്ലിംഗ് അല്ലെങ്കിൽ ടെലിമെട്രി ഡാറ്റയുടെ തെറ്റായ ഫ്ലഷിംഗ് കാരണം കാലതാമസം വരുത്താനോ ഒഴിവാക്കാനോ കഴിയും. ശരിയായ ടെലിമെട്രി ചാനൽ പെരുമാറ്റം ഉറപ്പാക്കുന്നത് സ്ഥിരമായ ലോഗുകൾ നിലനിർത്തുന്നതിന് നിർണായകമാണ്.

പലപ്പോഴും അവഗണിക്കപ്പെടുന്ന ഒരു ഘടകം ഇതാണ് host.json എന്നതിലെ കോൺഫിഗറേഷൻ. സാമ്പിൾ ചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, ഡാറ്റയുടെ അളവും ചെലവും കുറയ്ക്കുന്നതിന് ലോഗുകളുടെ ഒരു ഭാഗം മാത്രമേ ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകളിലേക്ക് അയയ്‌ക്കൂ. എന്നിരുന്നാലും, ഡീബഗ്ഗിംഗിന് ഇൻഫർമേഷൻ ലോഗുകൾ നിർണായകമാണെങ്കിൽ, നിങ്ങൾ ഒന്നുകിൽ സാമ്പിൾ പൂർണ്ണമായും പ്രവർത്തനരഹിതമാക്കണം (`"isEnabled": false`) അല്ലെങ്കിൽ ആവശ്യമായ എല്ലാ ലോഗുകളും ക്യാപ്‌ചർ ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കാൻ സാമ്പിൾ ലോജിക് ക്രമീകരിക്കുക. ഉദാഹരണത്തിന്, സാമ്പിളിംഗ് പ്രവർത്തനക്ഷമമാക്കുന്നത്, നിർണ്ണായകമല്ലാത്ത വിവര ലോഗുകളിൽ ക്രമരഹിതമായ കുറവുണ്ടാക്കുകയും, പ്രൊഡക്ഷൻ ഡീബഗ്ഗിംഗ് സമയത്ത് നിരാശയിലേക്ക് നയിക്കുകയും ചെയ്യുന്ന ഒരു പ്രശ്നം ഞാൻ അഭിമുഖീകരിച്ചു. 💻

കൂടാതെ, ഉപയോഗിക്കുന്നത് ഡാറ്റാ നഷ്‌ടം ഒഴിവാക്കി ബഫർ ചെയ്‌ത എല്ലാ ടെലിമെട്രികളും ഉടനടി അയയ്‌ക്കുന്നുവെന്ന് കമാൻഡുകൾ ഉറപ്പാക്കുന്നു. എച്ച്ടിടിപി അഭ്യർത്ഥനകൾ അല്ലെങ്കിൽ ടൈമർ ട്രിഗറുകൾ പോലുള്ള ഉയർന്ന ലോഡ് ട്രിഗറുകൾക്ക് കീഴിൽ അസൂർ ഫംഗ്‌ഷനുകൾ പ്രവർത്തിക്കുന്ന സാഹചര്യങ്ങളിൽ, ടെലിമെട്രി ബഫറിംഗ് വേഗത്തിൽ ശേഖരിക്കപ്പെടുകയും കാലതാമസമുണ്ടാക്കുകയും ചെയ്യും. TelemetryClient.Flush() എന്നതിലേക്ക് വ്യക്തമായി വിളിക്കുന്നതിലൂടെയോ ടെലിമെട്രി എൻഡ്‌പോയിൻ്റ് കണക്റ്റിവിറ്റി പരിശോധിക്കുന്നതിലൂടെയോ, ഡെവലപ്പർമാർക്ക് ലോഗ് പൊരുത്തക്കേടുകൾ കുറയ്ക്കാനും കൃത്യമായ നിരീക്ഷണ അന്തരീക്ഷം നിലനിർത്താനും കഴിയും. ആത്യന്തികമായി, സാംപ്ലിംഗ്, ബഫറിംഗ്, ഫ്ലഷിംഗ് എന്നിവ സന്തുലിതമാക്കുന്നത് ചെലവ് കുറയ്ക്കുന്നതിനിടയിൽ ഒപ്റ്റിമൽ ലോഗ് ദൃശ്യപരത അനുവദിക്കുന്നു.

  1. എന്തുകൊണ്ടാണ് ലോഗുകളുടെ വർക്ക്‌സ്‌പെയ്‌സിൽ നിന്ന് എൻ്റെ വിവര ലോഗുകൾ കാണാതെ പോകുന്നത്?
  2. കാരണം വിവര ലോഗുകൾ ദൃശ്യമാകണമെന്നില്ല ൽ . ഉപയോഗിച്ച് സാംപ്ലിംഗ് പ്രവർത്തനരഹിതമാക്കുക എല്ലാ ലോഗുകളും പിടിച്ചെടുക്കാൻ.
  3. host.json-ലെ LogLevel കോൺഫിഗറേഷൻ എന്താണ് ചെയ്യുന്നത്?
  4. ദി ക്യാപ്‌ചർ ചെയ്‌ത ഏറ്റവും കുറഞ്ഞ ലോഗ് തീവ്രത വ്യക്തമാക്കുന്നു , ആ നിലയിലോ അതിനു മുകളിലോ ഉള്ള ലോഗുകൾ പ്രോസസ്സ് ചെയ്യപ്പെടുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.
  5. ടെലിമെട്രി ഡാറ്റ ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകളിലേക്ക് ഫ്ലഷ് ചെയ്തിട്ടുണ്ടെന്ന് എനിക്ക് എങ്ങനെ ഉറപ്പാക്കാനാകും?
  6. ഉപയോഗിക്കുക ബഫർ ചെയ്‌ത എല്ലാ ടെലിമെട്രികളും ഉടനടി അയയ്‌ക്കാൻ നിങ്ങളുടെ ഫംഗ്‌ഷൻ കോഡിലെ രീതി.
  7. എന്തുകൊണ്ടാണ് മുന്നറിയിപ്പ്, പിശക് ലോഗുകൾ ദൃശ്യമാകുന്നത് എന്നാൽ വിവര ലോഗുകൾ അല്ല?
  8. എപ്പോഴാണ് ഈ പ്രശ്നം ഉണ്ടാകുന്നത് തെറ്റായി ക്രമീകരിച്ചിരിക്കുന്നു അല്ലെങ്കിൽ ഒപ്റ്റിമൈസേഷൻ കാരണം വിവര ലോഗുകൾ ഉപേക്ഷിക്കുക.
  9. നിർദ്ദിഷ്ട ലോഗുകൾ ഉൾപ്പെടുത്തുന്നതിന് എനിക്ക് സാമ്പിൾ ലോജിക്ക് ക്രമീകരിക്കാനാകുമോ?
  10. അതെ, നിങ്ങൾക്ക് ഇഷ്ടാനുസൃതമാക്കാൻ കഴിയും കീഴിലുള്ള സ്വത്ത് പോലുള്ള നിർദ്ദിഷ്ട ടെലിമെട്രി തരങ്ങൾ ഒഴിവാക്കാൻ അല്ലെങ്കിൽ Exception.
  11. AddApplicationInsightsTelemetryWorkerService()ൻ്റെ പങ്ക് എന്താണ്?
  12. ദി രീതി അസൂർ ഫംഗ്ഷനുകളിൽ ടെലിമെട്രിക്കുള്ള ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ രജിസ്റ്റർ ചെയ്യുന്നു.
  13. ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ ശരിയായി ലിങ്ക് ചെയ്തിട്ടുണ്ടെന്ന് ഞാൻ എങ്ങനെ പരിശോധിക്കും?
  14. അപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ ക്രമീകരണങ്ങൾക്ക് കീഴിൽ നിങ്ങളുടെ ഫംഗ്‌ഷൻ ആപ്പിൻ്റെ കോൺഫിഗറേഷനിൽ ഇൻസ്ട്രുമെൻ്റേഷൻ കീ അല്ലെങ്കിൽ കണക്ഷൻ സ്ട്രിംഗ് പരിശോധിക്കുക.
  15. എനിക്ക് വിവര-തല സന്ദേശങ്ങൾ പ്രോഗ്രാമാറ്റിക് ആയി ലോഗ് ചെയ്യാൻ കഴിയുമോ?
  16. അതെ, നിങ്ങൾക്ക് ഉപയോഗിക്കാം നിങ്ങളുടെ ഫംഗ്‌ഷൻ കോഡിൽ വിവര സന്ദേശങ്ങൾ വ്യക്തമായി ലോഗ് ചെയ്യുന്നതിനുള്ള രീതി.
  17. ഒരു ടൈമർ ട്രിഗർ ഫംഗ്‌ഷനിൽ നഷ്‌ടമായ ലോഗുകൾ എങ്ങനെ പരിഹരിക്കാനാകും?
  18. പരിശോധിച്ചുറപ്പിക്കുക കോൺഫിഗറേഷൻ, ടെലിമെട്രി ബന്ധിപ്പിച്ചിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക, വിളിക്കുക ചടങ്ങിൻ്റെ അവസാനം.
  19. ConfigureFunctionsWorkerDefaults() എന്താണ് ചെയ്യുന്നത്?
  20. ദി രീതി അസൂർ ഫംഗ്‌ഷൻസ് മിഡിൽവെയർ ആരംഭിക്കുകയും ലോഗിംഗ് സജ്ജീകരിക്കുകയും ചെയ്യുന്നു.

അസൂർ ഫംഗ്‌ഷൻ ലോഗുകളിൽ ലോഗ് ദൃശ്യപരത ഉറപ്പാക്കുന്നു

Azure ഫംഗ്‌ഷനുകളിൽ ശരിയായ ലോഗ് ദൃശ്യപരത ഉറപ്പാക്കുന്നതിന് host.json ൻ്റെ ശ്രദ്ധാപൂർവമായ കോൺഫിഗറേഷനും ശരിയായ ടെലിമെട്രി ക്രമീകരണവും ആവശ്യമാണ്. തുടങ്ങിയ പ്രശ്നങ്ങൾ കൂടാതെ ഡിഫോൾട്ട് ലോഗ് ലെവൽ ത്രെഷോൾഡുകൾ പോർട്ടൽ കൺസോളിൽ ഡാറ്റ ദൃശ്യമാകുമ്പോഴും ലോഗുകൾ നഷ്‌ടപ്പെടുന്നതിന് ഇടയാക്കും. സാമ്പിളിംഗ് വ്യക്തമായി പ്രവർത്തനരഹിതമാക്കുകയും ടെലിമെട്രി ഫ്ലഷ് രീതികൾ വിളിക്കുകയും ചെയ്യുന്നത് പലപ്പോഴും ഈ പ്രശ്നം പരിഹരിക്കുന്നു.

കൂടാതെ, ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകൾ ശരിയായി ബന്ധിപ്പിച്ചിട്ടുണ്ടെന്ന് സാധൂകരിക്കുകയും രണ്ടിലും ഉചിതമായ ലോഗ് ലെവലുകൾ ഉറപ്പാക്കുകയും ചെയ്യുന്നു കോൺഫിഗറേഷൻ ഫയലുകൾ നിർണായകമാണ്. ഈ ക്രമീകരണങ്ങൾക്കൊപ്പം, അസൂർ ഫംഗ്‌ഷൻ സ്വഭാവത്തെക്കുറിച്ച് വ്യക്തമായ ഉൾക്കാഴ്‌ചകൾ നൽകിക്കൊണ്ട്, ലോഗ്‌സ് വർക്ക്‌സ്‌പെയ്‌സിൽ വിവര ലോഗുകൾ വിശ്വസനീയമായി ദൃശ്യമാകും. 🛠️

  1. ആപ്ലിക്കേഷൻ സ്ഥിതിവിവരക്കണക്കുകളുടെ കോൺഫിഗറേഷനെക്കുറിച്ചുള്ള ഔദ്യോഗിക Microsoft ഡോക്യുമെൻ്റേഷൻ - മൈക്രോസോഫ്റ്റ് പഠിക്കുക
  2. അസൂർ ഫംഗ്‌ഷൻ ലോഗിംഗിനുള്ള മികച്ച സമ്പ്രദായങ്ങൾ - അസൂർ ഫംഗ്‌ഷൻസ് മോണിറ്ററിംഗ്