ডিবাগে অ্যাপ্লিকেশন অন্তর্দৃষ্টি অক্ষম করুন


104

কোনও ডিবাগ কনফিগারেশন ব্যবহার করার সময় আমি কীভাবে অ্যাপ্লিকেশন অন্তর্দৃষ্টিগুলি অক্ষম করতে পারি এবং কেবলমাত্র মুক্তির সময় সক্ষম করে দিতে পারি?
কেবল ডিবাগের জন্য অন্য কোনও উপকরণ কী তৈরি না করে এটি করা কি সম্ভব?

আমার trackeventসমস্ত কোডে বিবৃতি ছড়িয়ে আছে, একটি ডিবাগ প্রিপ্রোসেসর চেকের ভিতরে এগুলি সংযুক্ত করা কোনও আদর্শ সমাধান নয়।

আমার বর্তমান সমাধান সেট করতে হয় Build Actionএর ApplicationInsights.configফাইল Noneযাতে এটি প্রকল্পের আউটপুট ডিরেক্টরি অনুলিপি না, কিন্তু এই একটি প্রক্রিয়া যা সক্রিয় বিল্ড কনফিগারেশনের উপর ভিত্তি করে স্বয়ংক্রিয় করা যাবে না।

এখানে একটি বিকাশকারী মোড রয়েছে তবে ম্যানুয়ালি পরিবর্তিত হওয়া দরকার (যদি শর্তাধীন কনফিগারেশন ফাইলটি সেট করা সম্ভব হত তবে ইনস্ট্রুমেন্টেশনকিটি সমস্যা সমাধানের সমস্যাটি খালি করে)) দেখুন http://apmtips.com/blog/2015/02/02/developer-mode/

তথ্যসূত্র: http://blogs.msdn.com/b/visualstudioalm/archive/2015/01/07/application-insights-support-for-mpleple-enferences-stamps-and-app-versions.aspx

উত্তর:


71

আপনি টেলিমেট্রি কনফিগারেশনটি ব্যবহার করার চেষ্টা করতে পারেন isডিজিবালটেলমেট্রি সম্পত্তি এই জাতীয় কিছু ..

#if DEBUG
            TelemetryConfiguration.Active.DisableTelemetry = true;
#endif

আমি ঠিক আগে এই বিবৃতিটি যুক্ত করার চেষ্টা করেছি WindowsAppInitializer.InitializeAsync();(আমি এটির পরেও চেষ্টা করেছি) তবে ভিজ্যুয়াল স্টুডিও অ্যাপ্লিকেশন অন্তর্দৃষ্টি ইভেন্টগুলির পাল্টা বৃদ্ধি পেয়েছে। এই সেশনটি কার্যকরভাবে অ্যাজুর পোর্টালে রেকর্ড করা হয়েছে কিনা তা আমি দেখতে সক্ষম ছিলাম না কারণ এখানে অনেকগুলি সেশন এবং ব্যবহারকারী রয়েছে। আমি রাতে চেষ্টা করব।
আলবার্তো রিভেলি 21

আলবার্তো, আমি এটির মতো পরীক্ষা করেছি - 'কোড' পাবলিক সিল করা আংশিক শ্রেণীর মাইনপেজ: পৃষ্ঠা {টেলিমেট্রি ক্লায়েন্ট টেলিমেট্রি; সর্বজনীন মেইনপেজ () {this.InitializeComp घटक (); #if DEBUG TelemetryConfigration.Active.DisableTelemetry = true; #endif টেলিমেট্রি = নতুন টেলিমেট্রি ক্লায়েন্ট (); } বেসরকারী শূন্য বোতাম_ক্লিক (বস্তু প্রেরক, রাউটেডভেন্টআর্গস ই) {টেলিমেট্রি.ট্র্যাকইভেন্ট ("ইভেন্ট কাস্টম"); code 'কোড' .. এবং মনে হচ্ছে এটি কাজ করছে। আমি অন্য কয়েকটি পৃষ্ঠাও চেষ্টা করব। আপনাকে আপডেট রাখবে
অভিজিৎ জানা

এছাড়াও, ভিজ্যুয়াল স্টুডিও থেকে নিজেই, আপনি টেলিমেট্রি ইভেন্টগুলি প্রেরণ করা হয়েছে কিনা তা পরীক্ষা করে দেখতে পারেন। আমি এই ইয়েস্টার্ডে ভিজ্যুয়াল স্টুডিও 2015 থেকে অ্যাপ্লিকেশন অন্তর্দৃষ্টি ইভেন্টগুলির সংখ্যা কীভাবে পাবেন তা
অভিজিৎ জানা

এটাই আমি লিখেছি, ভিজ্যুয়াল স্টুডিও ইভেন্টগুলির পাল্টা বেড়েছে।
আলবার্তো রিভেলি

4
এমনকি ডিজেবল টেলমেট্রি সত্যতে সেট করা এবং একটি খালি উপকরণ কী দ্বারা, টেলিমেট্রি মডিউলগুলি ডেটা সংগ্রহ করতে থাকবে। ডেটা প্রেরণ করা হবে না, তবে তা সংগ্রহ করা হবে। অ্যাপ অন্তর্দৃষ্টিগুলির বিরুদ্ধে লগ হওয়া এই সমস্যাটি দেখুন: github.com/Mic Microsoft/ApplicationInsights-dotnet/issues/397 আপনি যদি প্রথম আউটপুটটি অক্ষম করতে চান, আপনি github.com/Mic Microsoft/ApplicationInsights-dotnet/issues/310 এ পাওয়া পদক্ষেপগুলি অনুসরণ করতে পারেন
গিলিয়াম লাহে

60

অন্যান্য সমাধানগুলির সংযোজন হিসাবে আমি নিম্নলিখিতটি যুক্ত করার পরামর্শ দেব Global.asax:

protected void Application_Start()
{    
    DisableApplicationInsightsOnDebug();
    // do the other stuff
}

/// <summary>
/// Disables the application insights locally.
/// </summary>
[Conditional("DEBUG")]
private static void DisableApplicationInsightsOnDebug()
{
    TelemetryConfiguration.Active.DisableTelemetry = true;
}

এর সুবিধাটি হ'ল, এটির কনফিগগুলিতে কোনও পরিবর্তন দরকার নেই এবং এটি রিসার্পারের মতো কিছু সরঞ্জামের সাথে আরও ভাল কাজ করে যা এটি -রীক্ষাগুলির চেয়ে আরও ভাল বোঝে #


4
আমরা সাধারণত মঞ্চে DEBUG কনফিগারেশন এবং উত্পাদনের সাথে সম্পর্কিত কনফিগার স্থাপন করি। উভয়েরই ওডব্লিউএন টেলিমেট্রি সক্ষম থাকতে পারে। সুতরাং আপনার পরিবর্তন মঞ্চ পরিবেশের জন্য টেলিমেট্রি অক্ষম করবে।
সের্গেই জি।

4
@ সার্জি আমি একটি একক কনফিগারেশন সংজ্ঞায়িত করতে এবং সেখানে একটি স্ট্যাগিং ভেরিয়েবল সংজ্ঞায়িত করার পরামর্শ দেব। সুতরাং আপনি স্থানীয়ভাবে ডিবাগিংয়ের মধ্যে আরও ভাল পার্থক্য করতে পারেন। আরেকটি বিকল্প Conditionalহ'ল একটি নতুন প্রতীক LOCAL সংজ্ঞায়িত করা এবং এটি-- র্ট্রিবিউটে প্রতিস্থাপন করা ।
আলেকজান্ডার শ্মিট

সাধারণত আমাদের স্টাগ এবং পিআরডি (যেমন এফবি অ্যাপ্লিকেশন আইডি, সেন্ডগ্রিড অ্যাকাউন্ট, অ্যাপ্লিকেশন সেটিংস ইত্যাদি) এর জন্য বিভিন্ন ডিবি সংযোগের স্ট্রিং, স্টোরেজ অ্যাকাউন্ট এবং অন্যান্য সেটিংস রয়েছে। তদুপরি - স্থানীয়ভাবে আমাদের কাছে অ্যাজুরি স্টোরেজ এমুলেটর এবং স্থানীয় এসকিউএল এক্সপ্রেস রয়েছে। সুতরাং একক কনফিগারেশন নিয়ে কাজ করার কোনও উপায় নেই। আমাদের 3 টি আলাদা কনফিগারেশন প্রয়োজন এবং স্থানীয় একটিতে অক্ষম টেলিমেট্রি থাকা উচিত।
সের্গেই জি।

আপনি নিজের কনফিগারেশনের একাধিকতে কাস্টম প্রতীকটি সংজ্ঞায়িত করতে পারেন। তারপরে শর্তসাপেক্ষ ("DEBUG") ব্যবহার না করে আপনি কন্ডিশনাল ("WHATVER") করতে পারবেন। বিকল্পভাবে আপনি অ্যাপসেটেটিংগুলি থেকে কোনও মান অর্জন করতে পারেন এবং অ-স্থানীয় পরিবেশে এটিকে উড়িয়ে দেওয়ার জন্য রূপান্তরগুলি ব্যবহার করতে পারেন।
জোয়েলমদেব

TelemetryConfigurationসংজ্ঞায়িত করা হয়নি
মেকোহি

34

এএসপি.নেট কোর প্রকল্পগুলির জন্য অ্যাপ অন্তর্দৃষ্টিগুলি ডিফল্ট হিসাবে চালু হয়, যা আসলে ডিবাগ উইন্ডোতে প্রচুর পরিমাণে তথ্য লগ করে।

এটি অক্ষম করতে "সরঞ্জামগুলি -> বিকল্পগুলি -> প্রকল্পগুলি এবং সমাধানগুলি -> ওয়েব প্রকল্পসমূহ" এ যান এবং "Asp.Net কোর ওয়েব প্রকল্পগুলির জন্য স্থানীয় অ্যাপ্লিকেশন অন্তর্দৃষ্টি অক্ষম করুন" দেখুন check

স্থানীয় অ্যাপ্লিকেশন অন্তর্দৃষ্টি অক্ষম করার জন্য চিত্রটির নীচে।

চিত্র

ইস্যুটির আরও তথ্যের জন্য আপনি এখানে অফিসিয়াল গিথুব ইস্যুটি দেখতে পারেন


22

প্রশ্নের বর্ণনায় যেমন <instrumentationkey>key</instrumentationkey>ব্লক ইভেন্টগুলি উত্পাদিত হওয়া ছাড়াই কোনও অ্যাপ্লিকেশনস্লাইটস কনফিগ মোতায়েন বা মোতায়েন করা নয়। তারপরে আপনি কোডটিতে উপকরণ কীটি লাগাতে পারেন (কেবলমাত্র আমার ক্ষেত্রে প্রকাশের জন্য)

#if !DEBUG
    Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = "instrumentation key";
#endif

TelemetryClientএই কলের পরে তৈরি প্রত্যেকটির সঠিক কী থাকবে এবং ইভেন্টগুলি ট্র্যাক করবে যাতে আপনাকে সমস্ত জায়গায় কোড পরিবর্তন করতে হবে না। উপরের পদ্ধতিটি কল না করা বা প্যারামিটারটি খালি ছেড়ে দেওয়া ইভেন্টগুলিকে ব্লক করে দেবে কারণ কোনও কী কনফিগার করা নেই।

মূলত ApplicationInsights.configফাইলটি যে কোনও কোডকে ওভাররাইড করে যা উপকরণ কী সেট করে, এর <instrumentationkey>key</instrumentationkey>ভিতরে সরিয়ে আপনি কীটি কনফিগার করতে কোড ব্যবহার করতে পারবেন। আপনি যদি ফাইলটি পুরোপুরি সরিয়ে ফেলেন তবে এটি কাজ করে না।

এখানে নিশ্চিতকরণটি রয়েছে: "আপনি যদি কীটি গতিশীলভাবে সেট করতে চান - উদাহরণস্বরূপ আপনি যদি নিজের অ্যাপ্লিকেশন থেকে ফলাফলটি বিভিন্ন উত্সে প্রেরণ করতে চান - আপনি কনফিগারেশন ফাইল থেকে কীটি বাদ দিতে পারেন এবং পরিবর্তে কোডে সেট করতে পারেন।"

তথ্যসূত্র: https://azure.microsoft.com/en-us/docamentation/articles/app-insights-configration-with-applicationinsights-config/#_instrumentationkey


4
আলাদাভাবে এটি কীভাবে ব্যবহার করবেন এই ব্লগটি দেখুনApplicationInsights.Debug/Release.config
ইয়াহু সিরিয়াস

17

ভিসুয়াল স্টুডিও 2017 (15.9.2) এর সাথে একটি এএসপি.নেট কোর 2.1 ওয়েব অ্যাপ্লিকেশন চালানো "এসপি.নেট কোর ওয়েব প্রকল্পগুলির জন্য স্থানীয় অ্যাপ্লিকেশন অন্তর্দৃষ্টি অক্ষম করুন" আমার ডিবাগ উইন্ডোতে আউটপুট সাফ করে নি।

তবে স্টার্টআপ.কে কনফিগার () এ নিম্নলিখিতটি যুক্ত করে কাজটি করেছে;

if (_env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    TelemetryConfiguration.Active.DisableTelemetry = true;
    TelemetryDebugWriter.IsTracingDisabled = true;
}

মনে রাখবেন যে ইসট্র্যাকিংডিশবলই ছিল মূল সমাধান , তবে আমি ভাল পরিমাপের জন্য ডিসেবলটেলমেট্রিতে রেখে গেছি! একই সমাধানে। নেট ফ্রেমওয়ার্ক এবং। নেট কোর প্রকল্পগুলির মধ্যে অনুরূপ রেফারেন্সগুলি অনুসন্ধান করার জন্য উভয় লাইন একে অপরের পাশে থাকা সহায়ক।


4
এটি আজ অপ্রচলিত, আমরা কীভাবে আজ এটি সঠিকভাবে করব?
অ্যালেক্স গর্ডন

16

আমি উভয় পন্থা ব্যবহার করার সিদ্ধান্ত নিয়েছে। আমি সরানো হয়েছে InstrumentationKeyথেকে Web.configএবং তা থেকে রূপান্তর দ্বারা প্রতিস্থাপন করা হবে Web.Release.configবা Web.Debug.config। (এটি ApplicationInsights.configফাইল থেকে সরাতে ভুলবেন না )। তারপরে আমি এই পদ্ধতিটি ডেকে আছিApplication_Start()

public static void RegisterTelemetryInstrumentationKey()
{
    if (string.IsNullOrWhiteSpace(WebConfigurationManager.AppSettings["TelemetryInstrumentationKey"])
    {
        TelemetryConfiguration.Active.DisableTelemetry = true;
    }
    else
    {
        TelemetryConfiguration.Active.InstrumentationKey = AppSettings.TelemetryInstrumentationKey;
    }
}

এটি আজ অপ্রচলিত, আমরা কীভাবে আজ এটি সঠিকভাবে করব?
অ্যালেক্স গর্ডন

11

আমি ঠিক একই সমস্যা ছিল।

আমরা ওয়েলকনফাইগের সেটিংটি নিয়ন্ত্রণ করতে চেয়েছিলাম তাই আমাদের অ্যাপ্লিকেশন সেটিংসের মধ্যে একটি ডিসএবলএআইএলমেট্রি কী যুক্ত করা হয়েছিল:

  <appSettings>
    <add key="DisableAITelemetry" value="true" />
  </appSettings>

লাইভ এবং ডেমো বিল্ডগুলি সহ, আমরা কোনও মান অন্তর্ভুক্ত করব না (যাতে এটির ক্ষেত্রে এটি মিথ্যাতে ডিফল্ট হয়)।

আমরা তখন এটি যুক্ত করে এটি সমাধান করতে পারি:

bool disable;
string disableAiTelemetry = ConfigurationManager.AppSettings["DisableAITelemetry"];
bool.TryParse(disableAiTelemetry, out disable);
TelemetryConfiguration.Active.DisableTelemetry = disable;

10

অন্যান্য কয়েকটি সমাধানে কিছুটা আলাদা খেলা। এটি আপনার গ্লোবাল.এক্সএক্সে রাখুন:

Microsoft.ApplicationInsights.Extensibility.Implementation.TelemetryDebugWriter.IsTracingDisabled = Debugger.IsAttached;

এটি ডিবাগারের অধীনে চলাকালীন অ্যাপ অন্তর্দৃষ্টি ডিবাগ আউটপুটটি বন্ধ করে দেবে, তবে এটি Ctrl + F5 পরিস্থিতিতে এবং সার্ভারগুলিতে প্রকাশিত ডিবাগ বিল্ডগুলির আওতায় মঞ্জুরি দেয়


10

একটি এএসপি.নেট কোর অ্যাপ্লিকেশনটিতে, আপনি বিকাশের পরিবেশে অ্যাপ্লিকেশন অন্তর্দৃষ্টি বন্ধ করতে স্টার্টাস.সিগুলিতে নিম্নলিখিতগুলি যুক্ত করতে পারেন:

if (env.IsDevelopment()) {
    TelemetryConfiguration.Active.DisableTelemetry = true;
}

builder.AddApplicationInsightsSettings();কমান্ডের ঠিক পরে এটি কনস্ট্রাক্টারে যুক্ত করুন এবং আপনি আর এআই লগগুলি আপনার ডিবাগ কনসোলকে আটকে দেখতে পাবেন না।


নাহ ... আমার জন্য কোনও পার্থক্য করেনি (এএসপি.নেট কোর ২.১ সহ)। এখনও আউটপুট উইন্ডোতে "অ্যাপ্লিকেশন অন্তর্দৃষ্টি টেলিমেট্রি" বার্তার একটি পর্বত পান get
মাইক গ্লেডহিল

7

আমরা এটির ডিবাগ লগের সন্ধান থেকে বাধা দেওয়ার সবচেয়ে সহজ উপায়টি এর মতোই সহজ:

Extensibility.Implementation.TelemetryDebugWriter.IsTracingDisabled = True

5

মাইক্রোসফ্ট.এপ্লিকেশনআইনসাইটস.এস্পনেটকোর সংস্করণ ২.১

services.AddApplicationInsightsTelemetry(options =>
{
    options.EnableDebugLogger = false;
});

এটি কি Application Insights Telemetry (unconfigured)ভিজ্যুয়াল স্টুডিওতে ডিবাগ প্যানেল থেকে বার্তাগুলি লুকিয়ে রাখার কথা - কারণ যদি তাই মনে হয় এটি কাজ করে না :-(
সাইমন_উইভার

4
আমি নিশ্চিত না যে এই ধরণের বার্তাটি কী। আমি বিশ্বাস করি আপনি এগুলি TelemetryDebugWriter.IsTracingDisabled = true;সরাতে চাইছেন ।
জেজেএস

3
         public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            #region Disable Application Insights debug informations
#if DEBUG
            TelemetryConfiguration.Active.DisableTelemetry = true;
            TelemetryDebugWriter.IsTracingDisabled = true;
#endif
            #endregion
//...
}

4
এটি আজ অপ্রচলিত, আমরা কীভাবে আজ এটি সঠিকভাবে করব?
অ্যালেক্স গর্ডন

1

এএসপি.নেট কোর ৩.১ হিসাবে:

public void Configure(IApplicationBuilder app, IHostingEnvironment env,
    TelemetryConfiguration configuration)
{
    configuration.DisableTelemetry = true;
}
TelemetryDebugWriter.IsTracingDisabled = true;

(উপরেরগুলি যে কোনও জায়গা থেকে কল করা যেতে পারে, তবে আপনার আবেদনের জীবনচক্রের মধ্যে যত তাড়াতাড়ি তত ভাল)।

উভয়ই আপনার কোডের সমস্ত অ্যাপ্লিকেশন অন্তর্দৃষ্টি ক্রিয়াকলাপ দমন করতে একসাথে ব্যবহার করা যেতে পারে। আমি #if DEBUGঅ্যাপ্লিশনটি আমার স্থানীয় মেশিনে কিছুই না করে তা নিশ্চিত করার জন্য আমি একটি নির্দেশ দিয়ে সতর্ক হই but

public void Configure(IApplicationBuilder app, IHostingEnvironment env,
    TelemetryConfiguration configuration)
{
    if (app.IsDevelopment())
    {
#if DEBUG
        configuration.DisableTelemetry = true;

        TelemetryDebugWriter.IsTracingDisabled = true;
#endif
    }
}

0

নেট কোর 3.1 থেকে:

var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
telemetryConfiguration.DisableTelemetry = true;

var telemetryClient = new TelemetryClient(telemetryConfiguration);   // Use this instance
TelemetryDebugWriter.IsTracingDisabled = true;

4
নির্ভরতা ইনজেকশনের মাধ্যমে টেলিমেট্রি কনফিগারেশন
নোহ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.