![]() |
VOOZH | about |
dotnet add package OutWit.Common.Logging --version 1.3.0
NuGet\Install-Package OutWit.Common.Logging -Version 1.3.0
<PackageReference Include="OutWit.Common.Logging" Version="1.3.0" />
<PackageVersion Include="OutWit.Common.Logging" Version="1.3.0" />Directory.Packages.props
<PackageReference Include="OutWit.Common.Logging" />Project file
paket add OutWit.Common.Logging --version 1.3.0
#r "nuget: OutWit.Common.Logging, 1.3.0"
#:package OutWit.Common.Logging@1.3.0
#addin nuget:?package=OutWit.Common.Logging&version=1.3.0Install as a Cake Addin
#tool nuget:?package=OutWit.Common.Logging&version=1.3.0Install as a Cake Tool
Install-Package OutWit.Common.Logging
or
> dotnet add package OutWit.Common.Logging
OutWit.Common.Logging is now part of a small family of packages — install only what you need:
| Package | Use when |
|---|---|
OutWit.Common.Logging.Abstractions |
You need just ILogManager / LogUtils extensions, without Serilog and aspect dependencies (e.g. designing a library against the logging contract). |
OutWit.Common.Logging (this package) |
You want the Log / NoLog / Measure aspects + SimpleLogger (observable-collection logger for desktop UI live log views). Transitively brings in Serilog. |
You need to read logs from a backend (NerdGraph, Loki, file) through a vendor-neutral ILogQueryProvider. |
|
Concrete ILogQueryProvider over NerdGraph (NRQL). |
|
Concrete ILogQueryProvider over Grafana Loki (LogQL HTTP API). |
Log AspectMaintaining logs is critical for debugging and supporting complex applications. Manually adding logging calls everywhere can be tedious and error-prone. The OutWit.Common.Logging package simplifies this process with three powerful aspects: Log, NoLog, and Measure. The source code is available here.
Before using the logging aspects, initialize the logger. The current implementation is based on Serilog:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Is(LogEventLevel.Information)
.Enrich.WithExceptionDetails()
.WriteTo.File(@"D:\Log\Log.txt",
rollingInterval: RollingInterval.Day,
rollOnFileSizeLimit: true,
fileSizeLimitBytes: 524288)
.CreateLogger();
Log AspectThe Log aspect can be applied to individual methods:
public class Model
{
[Log]
public void DoSomething1()
{
}
public void DoSomething2()
{
}
}
Or to an entire class:
[Log]
public class Model
{
public void DoSomething1()
{
}
public void DoSomething2()
{
}
}
When applied to a class, it automatically applies to all methods within the class.
What Does the Log Aspect Do?
This flexibility allows you to control log verbosity by adjusting the logger's configuration.
If the Log aspect is applied to a class, but you want to exclude specific methods from logging, you can use the NoLog aspect:
[Log]
public class Model
{
public void DoSomething1()
{
}
[NoLog]
public void DoSomething2()
{
}
}
To measure the execution time of a method, apply the Measure aspect. This will log the duration in milliseconds:
public class Model
{
public void DoSomething1()
{
}
[Measure]
public void DoSomething2()
{
}
}
When DoSomething2 is called, the log will include the method’s execution time.
For more details, check out the article.
Licensed under the Apache License, Version 2.0. See LICENSE.
If you use OutWit.Common.Logging in a product, a mention is appreciated (but not required), for example: "Powered by OutWit.Common.Logging (https://ratner.io/)".
"OutWit" and the OutWit logo are used to identify the official project by Dmitry Ratner.
You may:
You may not:
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 is compatible. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 is compatible. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 was computed. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 5 NuGet packages that depend on OutWit.Common.Logging:
| Package | Downloads |
|---|---|
|
OutWit.Common.MVVM
Cross-platform base components for the MVVM pattern. Includes ViewModelBase, RelayCommand, DelegateCommand, SortedCollection, and Table data models. Platform-specific implementations are available in OutWit.Common.MVVM.WPF and OutWit.Common.MVVM.Avalonia packages. |
|
|
OutWit.Engine.Interfaces
Core interface definitions and contracts for the OmnibusCloud distributed computing system. Provides interfaces for activities, variables, jobs, processing, benchmarking, and plugin development. |
|
|
OutWit.Common.MVVM.Blazor
Blazor-specific helpers and components for the MVVM pattern. Includes ViewModelBase, BlazorDispatcher, and utilities for building Blazor applications with MVVM pattern. This is part of the OutWit.Common.MVVM family of libraries. |
|
|
OutWit.Common.MVVM.Avalonia
Avalonia-specific helpers and components for the MVVM pattern. Includes AvaloniaDispatcher, BindingUtils, visual tree traversal utilities, and automatic StyledProperty/DirectProperty generation via source generator and AspectInjector. This is part of the OutWit.Common.MVVM family of libraries. |
|
|
OutWit.Engine.Sdk
Limited SDK version of WitEngine for controller plugin development and testing. Provides local execution with built-in limits for development workflows. |
This package is not used by any popular GitHub repositories.