/// <summary> /// Creates an instance of <see cref="ErrorReportingExceptionFilter"/> using credentials as /// defined by <see cref="GoogleCredential.GetApplicationDefaultAsync"/>. /// <para> /// Can be used when running on Google App Engine or Google Compute Engine. /// The Google Cloud Platform project to report errors to will detected from the /// current platform. /// </para> /// </summary> /// <param name="serviceName">An identifier of the service, such as the name of the executable or job. /// Cannot be null.</param> /// <param name="version">Represents the source code version that the developer provided. /// Cannot be null.</param> /// <param name="options">Optional, error reporting options.</param> public static ErrorReportingExceptionFilter Create( string serviceName, string version, ErrorReportingOptions options = null) { var contextLogger = ErrorReportingContextExceptionLogger.Create(null, serviceName, version, options); return(new ErrorReportingExceptionFilter(contextLogger)); }
/// <summary> /// Shared code for creating error reporting services. /// </summary> /// <param name="services">The service collection. Cannot be null.</param> /// <param name="projectId">The Google Cloud Platform project ID. If null the project Id will be auto detected.</param> /// <param name="serviceName">An identifier of the service, such as the name of the executable or job. /// Cannot be null.</param> /// <param name="version">Represents the source code version that the developer provided. /// Cannot be null.</param> /// <param name="options">Optional, error reporting options.</param> private static void AddGoogleExceptionLoggingBase( this IServiceCollection services, string projectId, string serviceName, string version, ErrorReportingOptions options = null) { services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>(); services.AddSingleton(ErrorReportingContextExceptionLogger.Create(projectId, serviceName, version, options)); services.AddSingleton(CreateExceptionLogger); }
/// <summary> /// Creates an instance of <see cref="ErrorReportingExceptionFilter"/> using credentials as /// defined by <see cref="GoogleCredential.GetApplicationDefaultAsync"/>. /// </summary> /// <param name="projectId">The Google Cloud Platform project ID. Cannot be null.</param> /// <param name="serviceName">An identifier of the service, such as the name of the executable or job. /// Cannot be null.</param> /// <param name="version">Represents the source code version that the developer provided. /// Cannot be null.</param> /// <param name="options">Optional, error reporting options.</param> public static ErrorReportingExceptionFilter Create(string projectId, string serviceName, string version, ErrorReportingOptions options = null) { GaxPreconditions.CheckNotNullOrEmpty(projectId, nameof(projectId)); var contextLogger = ErrorReportingContextExceptionLogger.Create(projectId, serviceName, version, options); return(new ErrorReportingExceptionFilter(contextLogger)); }
public async Task LogAsync() { var options = ErrorReportingOptions.Create( EventTarget.ForLogging("pid", loggingClient: new ThrowingLoggingClient())); var consumer = new FakeConsumer(); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( consumer, _service, _version, options, null); await logger.LogAsync(CreateException(), new FakeContextWrapper()); ValidateSingleEntry(consumer, _method, _uri, _userAgent, options); }
public async Task LogAsync() { var eventTarget = EventTarget.ForProject("pid"); var options = ErrorReportingOptions.CreateInstance(); var consumer = new FakeConsumer(); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( consumer, eventTarget, _serviceContext, options, null); await logger.LogAsync(CreateException(), new FakeContextWrapper()); ValidateSingleEntry(consumer, _method, _uri, _userAgent, options, eventTarget); }
public void Log_Simple() { var options = ErrorReportingOptions.Create( EventTarget.ForLogging("pid", loggingClient: new ThrowingLoggingClient())); var consumer = new FakeConsumer(); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( consumer, _service, _version, options, null); logger.Log(CreateException(), new EmptyContextWrapper()); ValidateSingleEntry(consumer, "", "", "", options); }
public void Log_Compat() { var eventTarget = EventTarget.ForLogging("pid", loggingClient: new ThrowingLoggingClient()); var options = ErrorReportingOptions.Create(eventTarget); var consumer = new FakeConsumer(); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( consumer, eventTarget, _serviceContext, options, null); logger.Log(CreateException(), new FakeContextWrapper()); ValidateSingleEntry(consumer, _method, _uri, _userAgent, options, eventTarget); }
public void Log_Simple() { var eventTarget = EventTarget.ForProject("pid"); var options = ErrorReportingOptions.CreateInstance(); var consumer = new FakeConsumer(); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( consumer, eventTarget, _serviceContext, options, null); logger.Log(CreateException(), new EmptyContextWrapper()); ValidateSingleEntry(consumer, "", "", "", options, eventTarget); }
public void Log_Simple() { var mockConsumer = new Mock <IConsumer <ReportedErrorEvent> >(); mockConsumer.Setup(c => c.Receive(IsContext("", "", "", 0))); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger(mockConsumer.Object, _service, _version); logger.Log(CreateException(), new EmptyContextWrapper()); mockConsumer.VerifyAll(); }
public void Log() { var mockConsumer = new Mock <IConsumer <ReportedErrorEvent> >(); mockConsumer.Setup(c => c.Receive(IsContext(_method, _uri, _userAgent, _statusCode))); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger(mockConsumer.Object, _service, _version); logger.Log(CreateException(), new FakeContextWrapper()); mockConsumer.VerifyAll(); }
public void Log_Simple() { var options = ErrorReportingOptions.Create( EventTarget.ForLogging("pid", loggingClient: new Mock <LoggingServiceV2Client>().Object)); var mockConsumer = new Mock <IConsumer <LogEntry> >(); mockConsumer.Setup(c => c.Receive(IsContext("", "", "", options))); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( mockConsumer.Object, _service, _version, options); logger.Log(CreateException(), new EmptyContextWrapper()); mockConsumer.VerifyAll(); }
public async Task LogAsync() { var mockConsumer = new Mock <IConsumer <ReportedErrorEvent> >(); mockConsumer.Setup(c => c.ReceiveAsync( IsContext(_method, _uri, _userAgent, _statusCode), It.IsAny <CancellationToken>())) .Returns(Task.FromResult(true)); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger(mockConsumer.Object, _service, _version); await logger.LogAsync(CreateException(), new FakeContextWrapper()); mockConsumer.VerifyAll(); }
/// <summary> /// Adds services for middleware that will report all uncaught exceptions to the /// Stackdriver Error Reporting API. /// <para> /// Can be used when running on Google App Engine or Google Compute Engine. /// The Google Cloud Platform project to report errors to will detected from the /// current platform. /// </para> /// </summary> /// <param name="services">The service collection. Cannot be null.</param> /// <param name="setupAction">Action to set up options. Cannot be null.</param> public static void AddGoogleExceptionLogging( this IServiceCollection services, Action <ErrorReportingServiceOptions> setupAction) { GaxPreconditions.CheckNotNull(services, nameof(services)); GaxPreconditions.CheckNotNull(setupAction, nameof(setupAction)); var serviceOptions = new ErrorReportingServiceOptions(); setupAction(serviceOptions); var serviceName = GaxPreconditions.CheckNotNull(serviceOptions.ServiceName, nameof(serviceOptions.ServiceName)); var version = GaxPreconditions.CheckNotNull(serviceOptions.Version, nameof(serviceOptions.Version)); services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>(); services.AddSingleton(ErrorReportingContextExceptionLogger.Create( serviceOptions.ProjectId, serviceName, version, serviceOptions.Options)); services.AddSingleton(CreateExceptionLogger); }
public async Task LogAsync() { var options = ErrorReportingOptions.Create( EventTarget.ForLogging("pid", loggingClient: new Mock <LoggingServiceV2Client>().Object)); var mockConsumer = new Mock <IConsumer <LogEntry> >(); mockConsumer.Setup(c => c.ReceiveAsync( IsContext(_method, _uri, _userAgent, options), It.IsAny <CancellationToken>())) .Returns(Task.FromResult(true)); IContextExceptionLogger logger = new ErrorReportingContextExceptionLogger( mockConsumer.Object, _service, _version, options); await logger.LogAsync(CreateException(), new FakeContextWrapper()); mockConsumer.VerifyAll(); }