How do I write log in .net core application running inside docker container so that log messages will show up in docker logs <container-id>
alternatively in Kitematic UI?
I've tried almost everything but always end up with no logs from dotnet apps. All the others non-dotnet apps I have in containers like NODE.js, nginx, rabbitmq write logs with no problem.
Here is what I've already tried:
- console app (.NET Core) using
Console.WriteLine
- ASP.NET Core app (default setup after using VS template with docker support) using ILogger interface
- using log4net inside console/ASP.NET Core app (logging actually works for example with RollingFileAppender) with ConsoleAppender
I couldn't find anyone experiencing the same problems (stackoverflow, google, github issues) so I assume I am missing something essential here.
UPDATE 1:
This is my current setup:
- Windows 10 Pro
- Docker for Windows 17.12.0-ce
- docker-compose version 1.18.0, build 8dd22a96
- running Linux containers
UPDATE 2:
Example of working Dockerfile (NodeJS app)
FROM node:9-slim
WORKDIR /app
EXPOSE 80
ENV NODE_PATH=/node_modules
ENV PATH=$PATH:/node_modules/.bin
COPY ./MyApp ./
RUN npm install
RUN npm run build
CMD [ "npm", "start" ]
Example of NOT working Dockerfile (ASP.NET Core, generated by Visual Studio)
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY *.sln ./
COPY DockerLoggingTest2/DockerLoggingTest2.csproj DockerLoggingTest2/
RUN dotnet restore
COPY . .
WORKDIR /src/DockerLoggingTest2
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "DockerLoggingTest2.dll"]
As you can see, there is nothing special about it. So the problem must be in .NET Core, since all the other types of application logs okay.