Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions Logging.Memory/src/Logging.Memory/Logging.Memory.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Copyright>Igor Vinogradov, 2016</Copyright>
<Copyright>Igor Vinogradov, 2016, James Coverdale 2022</Copyright>
<AssemblyTitle>Logging.Memory</AssemblyTitle>
<VersionPrefix>1.1.0</VersionPrefix>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
Expand All @@ -21,14 +21,15 @@
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
<Authors>Igor Vinogradov</Authors>
<Version>3.1.0</Version>
<Version>3.2.0</Version>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<AssemblyVersion>3.1.0.0</AssemblyVersion>
<FileVersion>3.1.0.0</FileVersion>
<AssemblyVersion>3.2.0.0</AssemblyVersion>
<FileVersion>3.2.0.0</FileVersion>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" />
</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,119 @@ public static ILoggerFactory AddMemory(this ILoggerFactory factory, IConfigurati
return factory.AddMemory(settings);
}

// ILoggingBuilder Extensions

/// <summary>
/// Adds a memory logger that is enabled for <see cref="LogLevel.Information"/> or higher.
/// </summary>
public static ILoggingBuilder AddMemory(this ILoggingBuilder builder)
{
if (builder == null)
{
throw new ArgumentNullException(nameof(builder));
}

builder.AddProvider(new MemoryLoggerProvider((category, logLevel) => logLevel >= LogLevel.Information));
return builder;
}

/// <summary>
/// Adds a memory logger that is enabled as defined by the filter function.
/// </summary>
public static ILoggingBuilder AddMemory(this ILoggingBuilder builder,
Func<string, LogLevel, bool> filter,
Func<LogLevel, string, string, Exception, string> logLineFormatter = null)
{
if (builder == null)
{
throw new ArgumentNullException(nameof(builder));
}

builder.AddProvider(new MemoryLoggerProvider(filter, logLineFormatter: logLineFormatter));
return builder;
}

/// <summary>
/// Adds a memory logger that is enabled for <see cref="LogLevel"/>s of minLevel or higher.
/// </summary>
/// <param name="builder">ILoggingBuilder</param>
/// <param name="minLevel">The minimum <see cref="LogLevel"/> to be logged</param>
/// <param name="logLineFormatter">Formatter for output log line</param>
public static ILoggingBuilder AddMemory(this ILoggingBuilder builder,
LogLevel minLevel,
Func<LogLevel, string, string, Exception, string> logLineFormatter = null)
{
if (builder == null)
{
throw new ArgumentNullException(nameof(builder));
}

builder.AddProvider(new MemoryLoggerProvider((category, logLevel) => logLevel >= minLevel, logLineFormatter: logLineFormatter));
return builder;
}

/// <summary>
/// Adds a memory logger that is enabled for <see cref="LogLevel.Information"/> or higher.
/// </summary>
public static ILoggingBuilder AddMemory(this ILoggingBuilder builder, int maxLogCount)
{
if (builder == null)
{
throw new ArgumentNullException(nameof(builder));
}

builder.AddProvider(new MemoryLoggerProvider((category, logLevel) => logLevel >= LogLevel.Information, maxLogCount));
return builder;
}

/// <summary>
/// Adds a memory logger that is enabled as defined by the filter function.
/// </summary>
public static ILoggingBuilder AddMemory(this ILoggingBuilder builder, Func<string, LogLevel, bool> filter, int maxLogCount)
{
if (builder == null)
{
throw new ArgumentNullException(nameof(builder));
}

builder.AddProvider(new MemoryLoggerProvider(filter, maxLogCount));
return builder;
}

/// <summary>
/// Adds a memory logger that is enabled for <see cref="LogLevel"/> of minLevel or higher.
/// </summary>
/// <param name="builder">ILoggingBuilder</param>
/// <param name="minLevel">The minimum <see cref="LogLevel"/> to be logged</param>
/// <param name="maxLogCount">Count of stored log lines</param>
public static ILoggingBuilder AddMemory(this ILoggingBuilder builder, LogLevel minLevel, int maxLogCount)
{
if (builder == null)
{
throw new ArgumentNullException(nameof(builder));
}

builder.AddProvider(new MemoryLoggerProvider((category, logLevel) => logLevel >= minLevel, maxLogCount));
return builder;
}

/// <summary>
/// Adds a memory logger with settings object.
/// </summary>
public static ILoggingBuilder AddMemory(this ILoggingBuilder builder, IMemoryLoggerSettings settings)
{
builder.AddProvider(new MemoryLoggerProvider(settings));
return builder;
}

/// <summary>
/// Adds a memory logger with settings from configuration.
/// </summary>
public static ILoggingBuilder AddMemory(this ILoggingBuilder builder, IConfiguration configuration)
{
var settings = new ConfigurationMemoryLoggerSettings(configuration);
return builder.AddMemory(settings);
}

}
}
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ NuGet package [Logging.Memory](https://www.nuget.org/packages/Logging.Memory/)
...
}

or via ILoggingBuilder

builder.Logging.AddMemory(LogLevel.Debug);

### 2. Now you can get log from static List everywhere

var logList = MemoryLogger.LogList;
Expand Down