asp.net – Docker日志中的.net输出

我正在尝试在Docker日志中获取日志输出(Console.WriteLine(..)),但我无法获得.

我试过了:

Console.WriteLine(..)

Trace.WriteLine(..)

冲洗控制台,冲洗迹线.

当我调试时,我可以在VS输出窗口中看到这些输出,所以它们会变成somoewhere.

我在windows Container上,使用microsoft / aspnet:4.7.1-windowsservercore-1709和net4.7

这些是我在容器启动时获得的日志

 docker logs -f exportapi
ERROR ( message:Cannot find requested collection element. )
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"

最佳答案 你有很多好的横向选项,比如自包含/服务器包含的可执行文件(例如,使用microsoft / dotnet的Dotnet Core:默认情况下,运行时会将dot.WriteLine代理到dotnet new web scaffold).零配置STDOUT日志记录从来就不是IIS上的常用方法,但这些现代选项将其作为最佳实践(日志记录应该是透明的后备服务).

如果您想要或需要一个由三个程序/程序集组成的链接来启动您的Web服务(ServiceMonitor,W3SVC,最后是您的程序集),那么您需要这样的东西:https://blog.sixeyed.com/relay-iis-log-entries-to-read-them-in-docker/

不幸的是,覆盖入口点以覆盖比默认情况下图像更多的日志是一种常见的黑客攻击(不仅仅是在微软的土地上).所以,在你的情况下,我相信你需要至少一个跟踪侦听器配置来发出Trace.WriteLine,然后上面的方法发出它:https://docs.microsoft.com/en-us/dotnet/framework/debug-trace-profile/how-to-create-and-initialize-trace-listeners

点赞