Приемник Serilog Seq с Docker не фиксирует события

Я запускаю веб-API и консольные приложения на Net Core 3.1 в Windows 10 Professional. У меня есть приемники для консоли, текстового файла, файла json, mssql и seq. Каждый из них регистрирует все события, за исключением того, что seq не регистрирует никаких событий.

Я установил Docker с помощью следующей команды:

docker run -d --restart except-Stop --name seq -e ACCEPT_EULA = Y -v D: \ Logs \ Seq: / data -p 8081: 80 datalust / seq: latest

Я создал регистратор с таким кодом:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Information()
    .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
    .MinimumLevel.Override("System", LogEventLevel.Warning)
    .Enrich.FromLogContext()
    .Enrich.WithMachineName()
    .Enrich.WithEnvironmentUserName()
    .Enrich.WithProcessId()
    .Enrich.WithThreadId()
    .WriteTo.Console()
    .WriteTo.File($@"{Constants.LogsDirectory}log-.txt", LogEventLevel.Information, rollingInterval: RollingInterval.Day)
    .WriteTo.File(new JsonFormatter(), $@"{Constants.LogsDirectory}log-.json", rollingInterval: RollingInterval.Day)
    .WriteTo.MSSqlServer(DatabaseAccess.ConnectionString(context), nameof(ProcessMessageLog), columnOptions: columnOptions)
    .WriteTo.Seq("http://localhost:8081")
    .CreateLogger();

В моем файле seq.json в каталоге D: \ Logs \ Seq я вижу следующее:

  "api": {
    "listenUris": [
       "http://localhost:8081"
    ],

Я также вижу файлы журнала, записываемые каждую минуту, но ни один из них не фиксирует события из веб-API или консольных приложений.

Когда я перехожу к localhost:8081, я получаю сообщение "localhost refused to connect.".

Я подозреваю, что у меня неправильные номера портов, но я не знаю. Должны ли они быть разными или одинаковыми между 1) настройкой докера, 2) значением seq.json, 3) созданием регистратора?


person David Stevens    schedule 28.01.2020    source источник
comment
Запустите команду docker ps, чтобы убедиться, что seq контейнер находится в состоянии "поднят". Если это не так, попробуйте использовать какой-либо случайный порт, отличный от 8081, поскольку этот порт может уже использоваться, что приводит к выходу из контейнера seq   -  person Mohsin Mehmood    schedule 28.01.2020


Ответы (1)


Похоже, что контейнер Seq в Docker плохо работает с моей картой памяти micro SD D: drive. Я просто переключился с этого на свой диск C :, и он отлично работает.

person David Stevens    schedule 28.01.2020
comment
Похоже, вы используете Docker для Windows. Вы настроили Resources -> File Sharing в настройках докера для совместного использования вашего диска D? - person mdisibio; 09.04.2020