File: test\Generators\Microsoft.Gen.Logging\TestClasses\LogPropertiesRedactionExtensions.cs
Web Access
Project: src\test\Generators\Microsoft.Gen.Logging\Generated\Microsoft.Gen.Logging.Generated.Tests.csproj (Microsoft.Gen.Logging.Generated.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Diagnostics.CodeAnalysis;
using Microsoft.Extensions.Compliance.Testing;
using Microsoft.Extensions.Logging;
 
namespace TestClasses
{
    [SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Test code")]
    internal static partial class LogPropertiesRedactionExtensions
    {
        internal class MyBaseClassToRedact
        {
            [PrivateData]
            public string StringPropertyBase { get; set; } = "StringPropertyBase";
        }
 
        internal class ClassWithPrivateData
        {
            [PrivateData]
            public string UserId { get; set; } = "UserId";
        }
 
        internal class MyInterimClassToRedact : MyBaseClassToRedact
        {
            public string NoRedactionProp { get; set; } = "No redaction";
        }
 
        internal class ClassToRedact : MyInterimClassToRedact
        {
            [PublicData]
            public string StringProperty { get; set; } = "StringProperty";
 
            public int SimplifiedNullableIntProperty { get; set; } = int.MinValue;
 
            [PrivateData]
            public string GetOnlyProperty => "GetOnlyProperty";
 
            [PrivateData]
            public NonFormattable NonFormattableProperty { get; set; }
 
            [LogProperties]
            public MyTransitiveClass TransitiveProp { get; set; } = new();
        }
 
        public class MyTransitiveClass
        {
            public int TransitiveNumberProp { get; set; } = int.MaxValue;
 
            [PrivateData]
            public string TransitiveStringProp { get; set; } = "TransitiveStringProp";
        }
 
        [LoggerMessage(1, LogLevel.Debug, "No template params")]
        public static partial void LogNoParams(ILogger logger, [LogProperties] ClassToRedact classToLog);
 
        [LoggerMessage(2, LogLevel.Information, "Only {StringProperty} as param")]
        public static partial void LogTwoParams(
            ILogger logger,
            [PrivateData] string stringProperty, [LogProperties] MyTransitiveClass? complexParam);
 
        // Default ctors:
        [LoggerMessage]
        public static partial void LogNoParamsDefaultCtor(ILogger logger, LogLevel level,
            [LogProperties] ClassToRedact classToLog);
 
        [LoggerMessage]
        public static partial void LogTwoParamsDefaultCtor(
            ILogger logger, LogLevel level,
            [PrivateData] string stringProperty, [LogProperties] MyTransitiveClass? complexParam);
 
        [LoggerMessage(LogLevel.Debug, "User {userId} has now different status")]
        public static partial void UserAvailabilityChanged(
            this ILogger logger,
            [PrivateData] string userId,
            [LogProperties] ClassWithPrivateData param);
    }
}