如月二月,天生恶相,吴苹杨武夫妇
steeltoe里的分布式追踪功能与spring cloud sleuth一样,支持在日志中记录追踪数据,或者上传到远端的服务,比如zipkin。
在steeltoe中使用日志时需要引入其特有的日志包steeltoe.extensions.logging.dynamiclogger
。
之后还需在应用程序启动时加入日志提供器。
webhost.createdefaultbuilder(args).usestartup<startup>().configurelogging((buildercontext, loggingbuilder) => { loggingbuilder.addconfiguration(buildercontext.configuration.getsection("logging")); // add steeltoe dynamic logging provider loggingbuilder.adddynamicconsole(); });
接下来,引入追踪包steeltoe.management.tracingcore
。
然后在startup类中加入追踪服务。
public void configureservices(iservicecollection services) { services.adddistributedtracing(configuration); services.addmvc(); }
最后在action方法里添加日志锚点。
[route("api/[controller]")] [apicontroller] public class valuescontroller : controllerbase { private readonly ilogger _logger; public valuescontroller(ilogger<valuescontroller> logger) { _logger = logger; } // get api/values [httpget] public actionresult<ienumerable<string>> get() { _logger.logwarning("hello log"); return new string[] { "value1", "value2" }; } }
并在appsettings.json文件确认如下配置:
"logging": { "loglevel": { "default": "warning" } }
这样启动程序后,可以在输出窗口内看到两条日志,这是因为steeltoe的日志提供器是对asp.net core自身日志器的进一步封装,其在原始数据基础上增加了如spring cloud sleuth中一样的额外信息。
如果想要把追踪数据发送到zipkin服务中,还需额外引入新的包steeltoe.management.exportercore
。
并在startup类中增加新的服务。
public void configureservices(iservicecollection services) { services.adddistributedtracing(configuration); services.addzipkinexporter(configuration); services.addmvc(); } public void configure(iapplicationbuilder app, ihostingenvironment env) { app.usemvc(); app.usetracingexporter(); }
appsettings.json文件里加上上文中zipkin的服务地址。
"management": { "tracing": { "alwayssample": true, "egressignorepattern": "/api/v2/spans|/v2/apps/.*/permissions|/eureka/.*|/oauth/.*", "exporter": { "zipkin": { "endpoint": "http://www.lhsxpumps.com/_localhost:10000/api/v2/spans", "validatecertificates": false } } } }
再次启动程序,首先可以看到exportable字段的值已从false变为了true。
然后,再到zipkin服务中查看,追踪数据确实已经传入到其中。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论