| File: HttpLoggingAttribute.cs | Web Access |
| Project: src\aspnetcore\src\Middleware\HttpLogging\src\Microsoft.AspNetCore.HttpLogging.csproj (Microsoft.AspNetCore.HttpLogging) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace Microsoft.AspNetCore.HttpLogging; /// <summary> /// Metadata that provides endpoint-specific settings for the HttpLogging middleware. /// </summary> [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class HttpLoggingAttribute : Attribute { /// <summary> /// Initializes an instance of the <see cref="HttpLoggingAttribute"/> class. /// </summary> /// <param name="loggingFields">Specifies what fields to log for the endpoint.</param> public HttpLoggingAttribute(HttpLoggingFields loggingFields) { LoggingFields = loggingFields; } private int _responseBodyLogLimit; private int _requestBodyLogLimit; /// <summary> /// Specifies what fields to log. /// </summary> public HttpLoggingFields LoggingFields { get; } /// <summary> /// Indicates whether <see cref="RequestBodyLogLimit"/> has been set. /// </summary> public bool IsRequestBodyLogLimitSet { get; private set; } /// <summary> /// Specifies the maximum number of bytes to be logged for the request body. /// </summary> /// <exception cref="ArgumentOutOfRangeException">Thrown when <see cref="RequestBodyLogLimit"/> set to a value less than <c>0</c>.</exception> /// <exception cref="InvalidOperationException">Thrown when getting <see cref="RequestBodyLogLimit"/> if it hasn't been set to a value. Check <see cref="IsRequestBodyLogLimitSet"/> first.</exception> public int RequestBodyLogLimit { get { if (IsRequestBodyLogLimitSet) { return _requestBodyLogLimit; } throw new InvalidOperationException($"{nameof(RequestBodyLogLimit)} was not set. Check {nameof(IsRequestBodyLogLimitSet)} before accessing this property."); } set { ArgumentOutOfRangeException.ThrowIfLessThan(value, 0, nameof(RequestBodyLogLimit)); _requestBodyLogLimit = value; IsRequestBodyLogLimitSet = true; } } /// <summary> /// Indicates whether <see cref="ResponseBodyLogLimit"/> has been set. /// </summary> public bool IsResponseBodyLogLimitSet { get; private set; } /// <summary> /// Specifies the maximum number of bytes to be logged for the response body. /// </summary> /// <exception cref="ArgumentOutOfRangeException">Thrown when <see cref="ResponseBodyLogLimit"/> set to a value less than <c>0</c>.</exception> /// <exception cref="InvalidOperationException">Thrown when getting <see cref="ResponseBodyLogLimit"/> if it hasn't been set to a value. Check <see cref="IsResponseBodyLogLimitSet"/> first.</exception> public int ResponseBodyLogLimit { get { if (IsResponseBodyLogLimitSet) { return _responseBodyLogLimit; } throw new InvalidOperationException($"{nameof(ResponseBodyLogLimit)} was not set. Check {nameof(IsResponseBodyLogLimitSet)} before accessing this property."); } set { ArgumentOutOfRangeException.ThrowIfLessThan(value, 0, nameof(ResponseBodyLogLimit)); _responseBodyLogLimit = value; IsResponseBodyLogLimitSet = true; } } }