Есть ли альтернатива Serilog (Seq) для Android? - PullRequest
0 голосов
/ 28 октября 2019

В Xamarin Forms я использую Serilog и Seq sink для входа в систему в режиме реального времени с устройств на мой сервер seq (в помещении).

Я ищу библиотеку Native Android (Android Studio) Logger, чтобыЯ могу войти в режиме реального времени с устройств на мой seq-сервер (в помещении).

Я не нашел ни одной библиотеки, которая давала бы мне возможность "впасть" в seq. Я думал о создании некоторого JSON и отправке его на мой seq сервер, но затем мне нужно будет также реализовать буфер (например, для записи в журнал в автономном режиме).

Вот пример кода из моего XamarinПриложение Forms (я хотел бы сделать нечто подобное в Native Android (Java) в Android Studio).

Затем я могу вызвать функцию «Информация» для записи уровня информации в seq

private readonly Serilog.ILogger _logger;

public Logger()
        {
            _seqLevelSwitch = new LoggingLevelSwitch(LogEventLevel.Information);
            _logger = new LoggerConfiguration()
                .WriteTo.Seq("<MySeqServer>", bufferBaseFilename:bufferedPath, bufferSizeLimitBytes: 20971520, controlLevelSwitch:_seqLevelSwitch)
                .CreateLogger();
        }

        public void Information(string message, EntryType entryType = EntryType.None, [CallerMemberName] string memberName = "",
            [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
        {
            sourceFilePath = sourceFilePath.Replace("\\", "/");
            _logger.ForContext(GetEnrichers(entryType)).Information($"{message}-{System.IO.Path.GetFileNameWithoutExtension(sourceFilePath)}:{memberName}:{sourceLineNumber}");
        }

        private IEnumerable<ILogEventEnricher> GetEnrichers(EntryType entryType)
        {
            var enrichers = new List<ILogEventEnricher>
            {
                new PropertyEnricher("Identifier", Config.UniqueID),
                new PropertyEnricher("Version", Config.Version),
                new PropertyEnricher("Manufacturer", Config.Manufacturer),
                new PropertyEnricher("Device", Config.Device),
                new PropertyEnricher("Release", Config.Release),
                new PropertyEnricher("Culture", Config.Culture)
            };
            if (entryType != EntryType.None)
            {
                enrichers.Add(new PropertyEnricher("EntryType", entryType));
            }
            return enrichers;
        }
}
...