[c#] 디버그에서 애플리케이션 인사이트 비활성화

디버그 구성을 사용할 때 자동으로 애플리케이션 통찰력을 비활성화하고 릴리스에서만 활성화하려면 어떻게해야합니까?
디버그 용으로 만 다른 계측 키를 만들지 않고이 작업을 수행 할 수 있습니까?
코드 전체에 흩어져

있는 trackevent명령문을 디버그 전 처리기 검사 내에 포함하는 것은 이상적인 솔루션이 아닙니다.

나의 현재 솔루션은 설정하는 것입니다 Build ActionApplicationInsights.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-multiple-environments-stamps-and-app-versions.aspx



답변

TelemetryConfiguration.DisableTelemetry 속성 사용을 시도 할 수 있습니다 . 이런 식으로 ..

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


답변

다른 솔루션에 추가로 다음을 추가하는 것이 좋습니다 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;
}

이것의 장점은 구성을 변경할 필요가 없으며 지시문보다 더 잘 이해할 수있는 ReSharper와 같은 일부 도구에서 더 잘 작동한다는 것 #입니다.


답변

ASP.NET Core 프로젝트의 경우 App Insights는 기본적으로 켜져 있으며 실제로 디버그 창에 많은 정보를 기록합니다.

비활성화하려면 “도구-> 옵션-> 프로젝트 및 솔루션-> 웹 프로젝트”로 이동하여 “Asp.Net Core 웹 프로젝트에 대한 로컬 Application Insights 비활성화”를 선택하십시오.

아래는 로컬 앱 인사이트를 비활성화하는 이미지입니다.

영상

이 문제에 대한 자세한 내용은 여기 에서 공식 github 문제를 볼 수 있습니다.


답변

<instrumentationkey>key</instrumentationkey>블록 이벤트가 생성 되지 않고 ApplicationInsights.config를 배포하거나 배포하지 않는 질문에 설명 된대로 . 그런 다음 계측 키를 코드에 넣을 수 있습니다 (제 경우에는 릴리스시에만)

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

TelemetryClient이 호출 후에 생성 된 모든 항목 은 올바른 키를 가지며 이벤트를 추적하므로 모든 위치에서 코드를 변경할 필요가 없습니다. 위의 메서드를 호출하지 않거나 매개 변수를 비워두면 키가 구성되지 않았기 때문에 이벤트가 차단됩니다.

기본적으로 ApplicationInsights.config파일은 계측 키를 설정하는 모든 코드를 재정의하므로 <instrumentationkey>key</instrumentationkey>내부를 제거하면 코드를 사용하여 키를 구성 할 수 있습니다.
파일을 완전히 제거하면 작동하지 않습니다.

확인은 다음과 같습니다. “키를 동적으로 설정하려면 (예 : 애플리케이션의 결과를 다른 리소스로 전송하려는 경우) 구성 파일에서 키를 생략하고 대신 코드에서 설정할 수 있습니다.”

참조 : https://azure.microsoft.com/en-us/documentation/articles/app-insights-configuration-with-applicationinsights-config/#_instrumentationkey


답변

두 가지 방법을 모두 사용하기로 결정했습니다. I는 이동 된 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;
    }
}


답변

Visual Studio 2017 (15.9.2)에서 ASP.NET Core 2.1 웹 애플리케이션을 실행하면 “Asp.Net Core 웹 프로젝트에 대한 로컬 Application Insights 사용 안 함”이 디버그 창에서 출력을 지우지 않았습니다.

그러나 Startup.cs의 Configure ()에 다음을 추가하면 작업이 수행되었습니다.

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

IsTracingDisabled가 핵심 솔루션 이었지만 좋은 측정을 위해 DisableTelemetry를 사용했습니다! 또한 동일한 솔루션에서 .NET Framework 및 .NET Core 프로젝트 간의 유사한 참조를 검색 할 때 두 줄을 나란히 배치하는 것이 유용합니다.


답변

나는 방금 같은 문제를 겪었습니다.

web.config의 설정을 제어하고 싶었으므로 앱 설정에 DisableAITelemetry 키를 추가했습니다.

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

라이브 및 데모 빌드에서는 값을 포함하지 않습니다 (기본값은 false로 설정 됨).

다음을 추가하여 해결할 수 있습니다.

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