예제 #1
0
        /// <nodoc />
        public LoggingConfiguration(ILoggingConfiguration template, PathRemapper pathRemapper)
            : base(template)
        {
            Contract.Assume(template != null);
            Contract.Assume(pathRemapper != null);

            LogsDirectory           = pathRemapper.Remap(template.LogsDirectory);
            RedirectedLogsDirectory = pathRemapper.Remap(template.RedirectedLogsDirectory);
            LogPrefix            = template.LogPrefix;
            Log                  = pathRemapper.Remap(template.Log);
            ErrorLog             = pathRemapper.Remap(template.ErrorLog);
            WarningLog           = pathRemapper.Remap(template.WarningLog);
            LogExecution         = template.LogExecution;
            ExecutionLog         = pathRemapper.Remap(template.ExecutionLog);
            StoreFingerprints    = template.StoreFingerprints;
            FingerprintStoreMode = template.FingerprintStoreMode;
            FingerprintStoreMaxEntryAgeMinutes      = template.FingerprintStoreMaxEntryAgeMinutes;
            FingerprintsLogDirectory                = pathRemapper.Remap(template.FingerprintsLogDirectory);
            ExecutionFingerprintStoreLogDirectory   = pathRemapper.Remap(template.ExecutionFingerprintStoreLogDirectory);
            CacheLookupFingerprintStoreLogDirectory = pathRemapper.Remap(template.CacheLookupFingerprintStoreLogDirectory);
            HistoricMetadataCacheLogDirectory       = pathRemapper.Remap(template.HistoricMetadataCacheLogDirectory);
            EngineCacheLogDirectory             = pathRemapper.Remap(template.EngineCacheLogDirectory);
            EngineCacheCorruptFilesLogDirectory = pathRemapper.Remap(template.EngineCacheCorruptFilesLogDirectory);
            CustomLog = new Dictionary <AbsolutePath, (IReadOnlyList <int>, EventLevel?)>();
            foreach (var kv in template.CustomLog)
            {
                CustomLog.Add(pathRemapper.Remap(kv.Key), kv.Value);
            }

            CustomLogEtwKinds = new Dictionary <AbsolutePath, string>();
            foreach (var kv in template.CustomLogEtwKinds)
            {
                CustomLogEtwKinds.Add(pathRemapper.Remap(kv.Key), kv.Value);
            }

            NoLog              = new List <int>(template.NoLog);
            NoExecutionLog     = new List <int>(template.NoExecutionLog);
            Diagnostic         = template.Diagnostic;
            ConsoleVerbosity   = template.ConsoleVerbosity;
            FileVerbosity      = template.FileVerbosity;
            LogCounters        = template.LogCounters;
            LogStats           = template.LogStats;
            EnableAsyncLogging = template.EnableAsyncLogging;
            StatsLog           = pathRemapper.Remap(template.StatsLog);
            EventSummaryLog    = pathRemapper.Remap(template.EventSummaryLog);
            Environment        = template.Environment;
            RemoteTelemetry    = template.RemoteTelemetry;
            TraceInfo          = new Dictionary <string, string>();
            foreach (var kv in template.TraceInfo)
            {
                TraceInfo.Add(kv.Key, kv.Value);
            }

            Color                            = template.Color;
            AnimateTaskbar                   = template.AnimateTaskbar;
            RelatedActivityId                = template.RelatedActivityId;
            LogsToRetain                     = template.LogsToRetain;
            FancyConsole                     = template.FancyConsole;
            FancyConsoleMaxStatusPips        = template.FancyConsoleMaxStatusPips;
            SubstSource                      = pathRemapper.Remap(template.SubstSource);
            SubstTarget                      = pathRemapper.Remap(template.SubstTarget);
            DisableLoggedPathTranslation     = template.DisableLoggedPathTranslation;
            LogStatus                        = template.LogStatus;
            StatusFrequencyMs                = template.StatusFrequencyMs;
            StatusLog                        = pathRemapper.Remap(template.StatusLog);
            CacheMissLog                     = pathRemapper.Remap(template.CacheMissLog);
            DevLog                           = pathRemapper.Remap(template.DevLog);
            RpcLog                           = pathRemapper.Remap(template.RpcLog);
            PipOutputLog                     = pathRemapper.Remap(template.PipOutputLog);
            FailPipOnFileAccessError         = template.FailPipOnFileAccessError;
            LogMemory                        = template.LogMemory;
            ReplayWarnings                   = template.ReplayWarnings;
            UseCustomPipDescriptionOnConsole = template.UseCustomPipDescriptionOnConsole;
            CacheMissAnalysisOption          = new CacheMissAnalysisOption(
                template.CacheMissAnalysisOption.Mode,
                new List <string>(template.CacheMissAnalysisOption.Keys),
                pathRemapper.Remap(template.CacheMissAnalysisOption.CustomPath));
            CacheMissDiffFormat = template.CacheMissDiffFormat;
            OptimizeConsoleOutputForAzureDevOps    = template.OptimizeConsoleOutputForAzureDevOps;
            InvocationExpandedCommandLineArguments = template.InvocationExpandedCommandLineArguments;
            OptimizeProgressUpdatingForAzureDevOps = template.OptimizeProgressUpdatingForAzureDevOps;
            OptimizeVsoAnnotationsForAzureDevOps   = template.OptimizeVsoAnnotationsForAzureDevOps;
        }