using System.Reactive.Concurrency;
using System.Reactive.Linq;
using System.Reactive.Subjects;

namespace InnovEnergy.Lib.Logging;

public static class Logger
{
    private static readonly Subject<LogMessage> Subject = new Subject<LogMessage>();

    public static IObservable<LogMessage> Messages { get; } = Subject.ObserveOn(TaskPoolScheduler.Default);


    public static void Log(String message, Dictionary<String, String> properties, params String[] tags)
    {
        var t = new HashSet<String>(tags);
        Log(message, properties, t);
    }

    private static void Log(String message, Dictionary<String, String> properties, HashSet<String> tags)
    {
        var logMessage = new LogMessage(message, tags, properties);
        Subject.OnNext(logMessage);
    }
 
    

    
    
}