Exemple #1
0
        public void RootCanLogMessage()
        {
            var o    = new SomeOutput();
            var f1   = LoggerEx.CreateDefaultFactory();
            var root = f1.Root;

            root.Severity = Severity.Debug;
            root.Log(Severity.Debug, "test");

            root.Outputs.Add(o);

            root.Log(Severity.Debug, "test");
            Assert.Equal("test", o.LastMessage.Get(MessageTokens.Message));
            Assert.Equal(Severity.Debug, o.LastMessage.Severity);

            root.Severity = Severity.Error;

            root.Log(Severity.Info, "test1");
            // this should not be logged
            Assert.Equal("test", o.LastMessage.Get(MessageTokens.Message));
            Assert.Equal(Severity.Debug, o.LastMessage.Severity);

            root.Log(Severity.Error, "error");
            // but this should
            Assert.Equal("error", o.LastMessage.Get(MessageTokens.Message));
            Assert.Equal(Severity.Error, o.LastMessage.Severity);

            root.Log(Severity.Fatal, "fatal");
            // and this should
            Assert.Equal("fatal", o.LastMessage.Get(MessageTokens.Message));
            Assert.Equal(Severity.Fatal, o.LastMessage.Severity);
        }
Exemple #2
0
        public void DefaultOutputsOk()
        {
            var outputs = OutputEx.DefaultOutputs();

            Assert.Equal(0, outputs.Count);
            Assert.True(outputs.SequenceEqual(Enumerable.Empty <IOutput>()));

            var o1      = new SomeOutput();
            var message = MessageEx.Default(Severity.Debug);

            outputs.Add(o1);
            Assert.Equal(1, outputs.Count);
            Assert.True(outputs.SequenceEqual(new[] { o1 }));

            o1.Throw = true;
            outputs.Log(message);
            Assert.Equal(0, o1.Logged.Count);

            o1.Throw = false;
            outputs.Log(message);
            Assert.True(o1.Logged.SequenceEqual(new[] { message }));

            var o2 = new SomeOutput();

            outputs.Add(o2);
            Assert.Equal(2, outputs.Count);
            Assert.True(new[] { o1, o2 }.All(c => outputs.Contains(c)));
            outputs.Log(message);
            Assert.True(o1.Logged.SequenceEqual(new[] { message, message }));
            Assert.True(o2.Logged.SequenceEqual(new[] { message }));
            o1.Throw = true;
            outputs.Log(message);
            Assert.True(o1.Logged.SequenceEqual(new[] { message, message }));
            Assert.True(o2.Logged.SequenceEqual(new[] { message, message }));
            o1.Throw = false;
            o2.Throw = true;
            outputs.Log(message);
            Assert.True(o1.Logged.SequenceEqual(new[] { message, message, message }));
            Assert.True(o2.Logged.SequenceEqual(new[] { message, message }));

            outputs.Remove(o1);
            Assert.Equal(1, outputs.Count);
            Assert.True(outputs.SequenceEqual(new[] { o2 }));

            o2.Throw = false;
            outputs.Log(message);
            Assert.True(o1.Logged.SequenceEqual(new[] { message, message, message }));
            Assert.True(o2.Logged.SequenceEqual(new[] { message, message, message }));

            outputs.Dispose();
            Assert.False(o1.Disposed);
            Assert.True(o2.Disposed);
        }
Exemple #3
0
        public void OutputSeverityOk()
        {
            var output      = new SomeOutput();
            var errorOutput = output.OutputSeverity(Severity.Error);
            var debugMsg    = MessageEx.Default(Severity.Debug);
            var infoMsg     = MessageEx.Default(Severity.Info);
            var errorMsg    = MessageEx.Default(Severity.Error);
            var fatalMsg    = MessageEx.Default(Severity.Fatal);
            var offMsg      = MessageEx.Default(Severity.Off);

            errorOutput.Log(debugMsg);
            errorOutput.Log(infoMsg);
            errorOutput.Log(errorMsg);
            errorOutput.Log(fatalMsg);
            errorOutput.Log(offMsg);
            Assert.True(output.Logged.SequenceEqual(new[] { errorMsg, fatalMsg }));
        }
Exemple #4
0
        public void LogUsesMessageFactory()
        {
            var f    = LoggerEx.CreateDefaultFactory(new FatalMessageFactory());
            var root = f.Root;

            root.Severity = Severity.Debug;
            var rootOutput = new SomeOutput();

            root.Outputs.Add(rootOutput);
            root.Log(Severity.Warn, "W");
            var lastMessage = rootOutput.LastMessage;

            Assert.Equal(Severity.Fatal, lastMessage.Severity);
            f.Get("test").Log(Severity.Info, "I");
            Assert.Equal(Severity.Fatal, rootOutput.LastMessage.Severity);
            Assert.NotEqual(lastMessage, rootOutput.LastMessage);
        }
Exemple #5
0
        public void ChildLogToRootAndSelf()
        {
            var f    = LoggerEx.CreateDefaultFactory();
            var root = f.Root;

            root.Severity = Severity.Debug;
            var child      = f.Get("test");
            var rootOutput = new SomeOutput();

            root.Outputs.Add(rootOutput);
            child.Log(Severity.Debug, "d");
            Assert.Equal(Severity.Debug, rootOutput.LastMessage.Severity);
            var childOutput = new SomeOutput();

            child.Outputs.Add(childOutput);
            child.Log(Severity.Warn, "W");
            Assert.Equal(Severity.Warn, rootOutput.LastMessage.Severity);
            Assert.Equal(Severity.Warn, childOutput.LastMessage.Severity);
            f.Get("test2").Log(Severity.Info, "I");
            Assert.Equal(Severity.Info, rootOutput.LastMessage.Severity);
            Assert.Equal(Severity.Warn, childOutput.LastMessage.Severity);
        }