FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

VerifyTests/Verify.MicrosoftLogging: Extends Verify to allow verification of MicrosoftLogging bits. · GitHub

Repository files navigation

Verify.MicrosoftLogging

Extends Verify to allow verification of MicrosoftLogging bits.

See Milestones for release notes.

Sponsors

Entity Framework Extensions

Entity Framework Extensions is a major sponsor and is proud to contribute to the development this project.

Developed using JetBrains IDEs

NuGet

Usage

[ModuleInitializer]
public static void Initialize() =>
    VerifyMicrosoftLogging.Initialize();

snippet source | anchor

Logging Recording allows, when a method is being tested, for any logging made as part of that method call to be recorded and verified.

Call LoggerRecording.Start(); to get an instance of the LoggerProvider. LoggerProvider implements both ILogger and ILoggerProvider.

Then pass in the LoggerProvider instance to a class/method that write log entries:

[Fact]
public Task Logging()
{
    Recording.Start();
    var logger = new RecordingLogger();
    var target = new ClassThatUsesLogging(logger);

    var result = target.Method();

    return Verify(result);
}

class ClassThatUsesLogging(ILogger logger)
{
    public string Method()
    {
        logger.LogWarning("The log entry");
        using (logger.BeginScope("The scope"))
        {
            logger.LogWarning("Entry in scope");
        }

        return "result";
    }
}

snippet source | anchor

Results in:

{
  target: result,
  log: [
    {
      Warning: The log entry
    },
    {
      Message: StartScope,
      State: The scope
    },
    {
      Warning: Entry in scope
    },
    {
      Message: EndScope
    }
  ]
}

snippet source | anchor

Typed

A common pattern is to use a type logger (Logger<T>). LoggerProvider provides a builder method CreateLogger<T> to construct a Logger<T>:

[Fact]
public Task LoggingTyped()
{
    Recording.Start();
    var logger = RecordingProvider.CreateLogger<ClassThatUsesTypedLogging>();
    var target = new ClassThatUsesTypedLogging(logger);

    var result = target.Method();

    return Verify(result);
}

class ClassThatUsesTypedLogging(ILogger<ClassThatUsesTypedLogging> logger)
{
    public string Method()
    {
        logger.LogWarning("The log entry");
        return "result";
    }
}

snippet source | anchor

Results in:

{
  target: result,
  log: {
    Warning: The log entry,
    Category: ClassThatUsesTypedLogging
  }
}

snippet source | anchor

Icon

Log designed by Ben Davis from The Noun Project.

About

Extends Verify to allow verification of MicrosoftLogging bits.

Resources

Code of conduct

Stars

7 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages


Back | FazBrowse Home | New Git URL