示例#1
0
文件: Log.cs 项目: sergiipopil/Kiosk
        private static void DefaultLogWriter(LogTypeEnum type, LogContextEnum context, string message, object additionalData)
        {
            if (_logger == null)
            {
                throw new InvalidOperationException($"Logging is not initialized. Run '{nameof(Initialize)}' first.");
            }

            // does not block invoking code
            Task.Run(async() =>
            {
                try
                {
                    var logRecord = new LogRecord()
                    {
                        UniqueId           = $"{Guid.NewGuid():N}{Guid.NewGuid():N}", // double GUID
                        KioskVersion       = _kioskVersion,
                        LocalTime          = DateTime.Now,
                        Type               = type,
                        Context            = context,
                        Message            = message,
                        AdditionalDataJson = _logger.SerializeObject(additionalData),
                    };

                    await _logger.MoveLogRecordToQueueAsync(logRecord);
                }
                catch
                {
                    // ignore to avoid infinite recursion
                }
            });
        }
        private void Write(LogTypeEnum type, LogContextEnum context, string message, object additionalData, string callerName)
        {
            var callerNamePrefix = string.IsNullOrEmpty(callerName) ||
                                   callerName == _operationName ||
                                   callerName == _operationName + "Async"
                ? null
                : $"{callerName}: ";

            // modify message with
            message = $"'{_componentFullName}'.{_operationName}: {callerNamePrefix}{message}";

            Log.Write(type, context, message, additionalData);
        }
示例#3
0
文件: Log.cs 项目: sergiipopil/Kiosk
 public static void Trace(LogContextEnum context, string message, object additionalData = null)
 {
     Write(LogTypeEnum.Trace, context, message, additionalData);
 }
示例#4
0
文件: Log.cs 项目: sergiipopil/Kiosk
 public static void Write(LogTypeEnum type, LogContextEnum context, string message, object additionalData)
 {
     // null is possible in design-time - do not invoke writer in order to prevent XAML preview errors
     _logWriter?.Invoke(type, context, message, additionalData);
 }
示例#5
0
文件: Log.cs 项目: sergiipopil/Kiosk
 public static void Error(LogContextEnum context, string message, Exception exception)
 {
     Write(LogTypeEnum.Error, context, message, exception.GetLoggableObject());
 }
示例#6
0
文件: Log.cs 项目: sergiipopil/Kiosk
 public static void Error(LogContextEnum context, Exception exception)
 {
     Error(context, exception?.Message, exception);
 }
 public void Error(LogContextEnum context, string message, Exception exception, [CallerMemberName] string callerName = null)
 {
     Write(LogTypeEnum.Error, context, message, exception.GetLoggableObject(), callerName);
 }
 public void Error(LogContextEnum context, Exception exception, [CallerMemberName] string callerName = null)
 {
     Error(context, exception?.Message, exception);
 }
 public void Error(LogContextEnum context, string message, object additionalData = null, [CallerMemberName] string callerName = null)
 {
     Write(LogTypeEnum.Error, context, message, additionalData, callerName);
 }