log4net.ObservableAppender 1.1.0

dotnet add package log4net.ObservableAppender --version 1.1.0
                    
NuGet\Install-Package log4net.ObservableAppender -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="log4net.ObservableAppender" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="log4net.ObservableAppender" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="log4net.ObservableAppender" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add log4net.ObservableAppender --version 1.1.0
                    
#r "nuget: log4net.ObservableAppender, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package log4net.ObservableAppender@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=log4net.ObservableAppender&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=log4net.ObservableAppender&version=1.1.0
                    
Install as a Cake Tool

Overview NuGet Actions Status Coverage Status

An appender for log4net, called ObservableAppender which exposes all matched log entries as IObservable<LoggingEvent> which allows to work with logs using System.Reactive framework. Unlike MemoryAppender, it does not persist any logging events by default and thus does not bloat memory in a long run. However, it has such an option exposed as Persist property (false by default). The appender also supports completion of IObservable<LoggingEvent> by logging repository shutdown ar an explicit IAppender.Close() call.

Installation

NuGet package is available here.

PM> Install-Package log4net.ObservableAppender

Examples

Configure log4net with ObservableAppender and subscribe on logging events:

var appender = new ObservableAppender();

Config.BasicConfigurator.Configure(LogManager.GetRepository(Assembly.GetEntryAssembly()), appender);

var logger = LogManager.GetLogger(typeof(ObservableAppenderTests));

appender.LoggingEvents.Subscribe(loggingEvent => ...);

Alternatively, configure log4net by the app config section:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    
  </configSections>
  
  <log4net>
    <appender name="ObservableAppender" type="log4net.Appender.ObservableAppender, log4net.ObservableAppender">
      <Persist value="true" />
    </appender>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMax" value="FATAL" />
      <param name="LevelMin" value="DEBUG" />
    </filter>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-32.32M - %m%n" />
    </layout>
  
    <root>
      <appender-ref ref="ObservableAppender" />
    </root>
  </log4net>
  
  
</configuration>

See more examples at the unit test project.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.0 101 9/6/2025
1.0.2 1,401 12/28/2018
1.0.1 1,138 12/20/2018
1.0.0 1,115 12/20/2018

Added .Net 9.