A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

53 lines
1.8 KiB

namespace Avalonia.Logging
{
/// <summary>
/// Logs avalonia messages.
/// </summary>
public static class Logger
{
/// <summary>
/// Gets or sets the application-defined sink that receives the messages.
/// </summary>
public static ILogSink Sink { get; set; }
/// <summary>
/// Checks if given log level is enabled.
/// </summary>
/// <param name="level">The log event level.</param>
/// <returns><see langword="true"/> if given log level is enabled.</returns>
public static bool IsEnabled(LogEventLevel level)
{
return Sink?.IsEnabled(level) == true;
}
/// <summary>
/// Returns parametrized logging sink if given log level is enabled.
/// </summary>
/// <param name="level">The log event level.</param>
/// <returns>Log sink or <see langword="null"/> if log level is not enabled.</returns>
public static ParametrizedLogger? TryGet(LogEventLevel level)
{
if (!IsEnabled(level))
{
return null;
}
return new ParametrizedLogger(Sink, level);
}
/// <summary>
/// Returns parametrized logging sink if given log level is enabled.
/// </summary>
/// <param name="level">The log event level.</param>
/// <param name="outLogger">Log sink that is valid only if method returns <see langword="true"/>.</param>
/// <returns><see langword="true"/> if logger was obtained successfully.</returns>
public static bool TryGet(LogEventLevel level, out ParametrizedLogger outLogger)
{
ParametrizedLogger? logger = TryGet(level);
outLogger = logger.GetValueOrDefault();
return logger.HasValue;
}
}
}