所以我有一个微服务作为.NET Core下的Docker容器运行,并在Azure上记录到Application Insights,因为它将从EventHub提取的大量数据写入SQL Server。
每隔一段时间我就会得到一个未处理的SqlException,它似乎被抛出在后台线程上,这意味着我无法捕获并处理它,也无法解决这个bug。
解决方法是将重新启动策略设置为always并重新启动服务。这很有效,但现在我无法在Application Insights中跟踪此异常。
我认为未处理的异常是由CLR写入stderr所以它在Docker日志中出现了一些grepping,但有没有办法在启动时检查它,然后将其记录到Application Insights,这样我就可以发现它没有登录Swarm集群和grep重启信息?
答案 0 :(得分:0)
要保留日志,
方法1
将docker日志目录挂载到主机。
示例:
docker run -name Container_1 -v / host_dir / logs:/ var / log / app docker_image:version
Docker容器会在/ var / log / app目录中写入日志。现在,对于docker restart,主机的/ host_dir / logs目录中也会保留这些日志。
方法2
配置日志驱动程序,如syslog或fluentd in docker。您可以查看https://docs.docker.com/engine/admin/logging/overview/进行配置。