log4net.ObservableAppender
1.1.0
dotnet add package log4net.ObservableAppender --version 1.1.0
NuGet\Install-Package log4net.ObservableAppender -Version 1.1.0
<PackageReference Include="log4net.ObservableAppender" Version="1.1.0" />
<PackageVersion Include="log4net.ObservableAppender" Version="1.1.0" />
<PackageReference Include="log4net.ObservableAppender" />
paket add log4net.ObservableAppender --version 1.1.0
#r "nuget: log4net.ObservableAppender, 1.1.0"
#:package log4net.ObservableAppender@1.1.0
#addin nuget:?package=log4net.ObservableAppender&version=1.1.0
#tool nuget:?package=log4net.ObservableAppender&version=1.1.0
Overview

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 | Versions 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. |
-
net9.0
- log4net (>= 2.0.10)
- System.Reactive (>= 4.1.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added .Net 9.