예제 #1
0
        public void Log <TState>(
            LogLevel logLevel,
            EventId eventId,
            TState state,
            Exception exception,
            Func <TState, Exception, string> formatter)
        {
            var msg        = LogDtoConverter.Convert(logLevel, eventId, state, exception, formatter);
            var msgToWrite = new LogMessageToWrite(msg, logLevel);

            _logMessageQueue.Push(msgToWrite);
        }
예제 #2
0
        public void Log <TState>(
            LogLevel logLevel,
            EventId eventId,
            TState state,
            Exception exception,
            Func <TState, Exception, string> formatter)
        {
            var msg        = LogDtoConverter.Convert(logLevel, eventId, state, exception, formatter);
            var msgToWrite = new LogMessageToWrite(msg, logLevel);
            var writeTask  = _logMessageWriter.WriteMessageAsync(Enumerable.Repeat(msgToWrite, 1), CancellationToken.None);

            writeTask.Wait(CancellationToken.None);
        }
예제 #3
0
        string GetFilenameTag(LogMessageToWrite messageToWrite)
        {
            switch (messageToWrite.Level)
            {
            case LogLevel.Trace:
            case LogLevel.Debug:
                return("dbg");

            case LogLevel.Error:
            case LogLevel.Critical:
                return("err");

            case LogLevel.Information:
            case LogLevel.None:
            case LogLevel.Warning:
                return("");

            default:
                throw new ArgumentOutOfRangeException(nameof(messageToWrite.Level), messageToWrite.Level, null);
            }
        }
예제 #4
0
 public void Push(LogMessageToWrite message)
 {
     _logQueue.TryAdd(message);
 }