Esempio n. 1
0
        internal string InternalMarkup(string src, ImmutableStack <string> parents)
        {
            LoggerFileScope fileScope = null;

            if (!parents.IsEmpty)
            {
                var path = parents.Peek().ToDisplayPath();
                if (!string.IsNullOrEmpty(path))
                {
                    fileScope = new LoggerFileScope(path);
                }
            }

            using (fileScope)
            {
                return(InternalMarkup(src, Context.SetFilePathStack(parents)));
            }
        }
Esempio n. 2
0
        public void TestFileScope()
        {
            var listener = new TestLoggerListener("TestFileScope");

            try
            {
                Logger.RegisterListener(listener);
                Action callback;

                Logger.LogInfo("Not in file scope.", listener.Phase);
                Assert.Null(listener.TakeAndRemove().File);

                using (new LoggerFileScope("A"))
                {
                    Logger.LogInfo("In file A", listener.Phase);
                    Assert.Equal("A", listener.TakeAndRemove().File);

                    using (new LoggerFileScope("B"))
                    {
                        Logger.LogInfo("In file B", listener.Phase);
                        Assert.Equal("B", listener.TakeAndRemove().File);

                        var captured = LoggerFileScope.Capture();
                        callback = () =>
                        {
                            using (LoggerFileScope.Restore(captured))
                            {
                                Logger.LogInfo("In captured file B", listener.Phase);
                            }
                        };
                    }

                    Logger.LogInfo("In file A", listener.Phase);
                    Assert.Equal("A", listener.TakeAndRemove().File);

                    callback();
                    Assert.Equal("B", listener.TakeAndRemove().File);

                    Logger.LogInfo("In file A", listener.Phase);
                    Assert.Equal("A", listener.TakeAndRemove().File);

                    using (new LoggerFileScope("C"))
                    {
                        Logger.LogInfo("In file C", listener.Phase);
                        Assert.Equal("C", listener.TakeAndRemove().File);

                        callback();
                        Assert.Equal("B", listener.TakeAndRemove().File);
                    }
                }

                Logger.LogInfo("Not in file scope.", listener.Phase);
                Assert.Null(listener.TakeAndRemove().File);

                callback();
                Assert.Equal("B", listener.TakeAndRemove().File);

                Logger.LogInfo("Not in file scope.", listener.Phase);
                Assert.Null(listener.TakeAndRemove().File);
            }
            finally
            {
                Logger.UnregisterListener(listener);
            }
        }
Esempio n. 3
0
        public void TestFileScope()
        {
            const string PhaseName = "TestFileScope";
            var          listener  = TestLoggerListener.CreateLoggerListenerWithPhaseEqualFilter(PhaseName, LogLevel.Info);

            try
            {
                Logger.RegisterListener(listener);
                Action callback;

                Logger.LogInfo("Not in file scope.", PhaseName);
                Assert.Null(TakeFirstLogItemAndRemove(listener.Items).File);

                using (new LoggerFileScope("A"))
                {
                    Logger.LogInfo("In file A", PhaseName);
                    Assert.Equal("A", TakeFirstLogItemAndRemove(listener.Items).File);

                    using (new LoggerFileScope("B"))
                    {
                        Logger.LogInfo("In file B", PhaseName);
                        Assert.Equal("B", TakeFirstLogItemAndRemove(listener.Items).File);

                        var captured = LoggerFileScope.Capture();
                        callback = () =>
                        {
                            using (LoggerFileScope.Restore(captured))
                            {
                                Logger.LogInfo("In captured file B", PhaseName);
                            }
                        };
                    }

                    Logger.LogInfo("In file A", PhaseName);
                    Assert.Equal("A", TakeFirstLogItemAndRemove(listener.Items).File);

                    callback();
                    Assert.Equal("B", TakeFirstLogItemAndRemove(listener.Items).File);

                    Logger.LogInfo("In file A", PhaseName);
                    Assert.Equal("A", TakeFirstLogItemAndRemove(listener.Items).File);

                    using (new LoggerFileScope("C"))
                    {
                        Logger.LogInfo("In file C", PhaseName);
                        Assert.Equal("C", TakeFirstLogItemAndRemove(listener.Items).File);

                        callback();
                        Assert.Equal("B", TakeFirstLogItemAndRemove(listener.Items).File);
                    }
                }

                Logger.LogInfo("Not in file scope.", PhaseName);
                Assert.Null(TakeFirstLogItemAndRemove(listener.Items).File);

                callback();
                Assert.Equal("B", TakeFirstLogItemAndRemove(listener.Items).File);

                Logger.LogInfo("Not in file scope.", PhaseName);
                Assert.Null(TakeFirstLogItemAndRemove(listener.Items).File);
            }
            finally
            {
                Logger.UnregisterListener(listener);
            }
        }