首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用的性能监测

应用的性能监测
EN

Stack Overflow用户
提问于 2018-07-10 18:15:54
回答 3查看 1.2K关注 0票数 0

我希望在一行中有关于http请求的特殊性能日志。

  • 请求url
  • 耗用时间
  • 用户名
  • 返回状态码
  • 活动id (如果某些请求内部重定向到另一个操作)

我现在使用serilog记录未处理的异常。哪里是添加这种日志插入的理想位置,或者什么是最佳实践?将日志存储到数据库中是一个很好的实践吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-11 05:31:07

如果您希望它简单,并且使用您自己的解决方案,您可以为asp.net核心管道编写一个跟踪所需数据的asp.net。

我不建议使用Serilog来保存所收集的信息。Serilog是一个日志框架,不应该用于跟踪应用程序度量。

直接使用数据库(sql、mongo等)来存储和分析你的数据。您已经在问题中定义了对象模型,因此您应该很容易在数据库中创建并持久化您的模型的实例。

票数 1
EN

Stack Overflow用户

发布于 2018-07-12 08:45:27

中间件方法似乎起作用了。

代码语言:javascript
复制
public class PerformanceMiddleware
    {
        private readonly RequestDelegate next;
        private readonly IConfiguration _configuration;
        private readonly ILogger _logger;

        public PerformanceMiddleware(RequestDelegate next, IConfiguration configuration, ILogger<PerformanceMiddleware> logger)
        {
            _configuration = configuration;
            _logger = logger;
            this.next = next;
        }

        public async Task Invoke(HttpContext context)
        {
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();

            await next.Invoke(context);

            stopwatch.Stop();

            try
            {
                using (var conn = new SqlConnection(_configuration.GetConnectionString("DefaultConnection")))
                using (var command = new SqlCommand("dbo.usp_insertPerformance", conn) { CommandType = CommandType.StoredProcedure })
                {
                    conn.Open();

                    // set parameters
                    command.ExecuteNonQuery();
                }
            }
            // We dont want show this error to user.
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error in PerformanceMiddleware database operation.");
            }

        }
    }
票数 2
EN

Stack Overflow用户

发布于 2018-07-11 16:48:49

为什么不使用APM工具或跟踪工具来实现这一点,而不是仅仅使用不允许您实际识别和解决问题的数据创建日志。APm工具提供了更多的价值,而不仅仅是记录性能数据,而是使您能够解决问题。这一领域的领军人物是AppDynamics、New和Dynatrace。这里也有许多开源工具,比如Zipkin、Jaeger和Skywalking。你可能也想解释一下你的应用程序的架构和语言:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51271761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档