【问题标题】:Logging Servicestack Bad Requests记录 Servicestack 错误请求
【发布时间】:2012-09-19 07:06:58
【问题描述】:

当您启用 ValidationFeature 插件时,有没有办法记录填充在 ResponseStatus 中的验证结果?

据我所知,任何进来的请求都会得到验证,如果验证通过,就会进入服务。使用请求过滤器我可以记录进来的请求,但是使用响应过滤器我只能记录有效的请求。

我尝试记录所有响应,尤其是由于验证错误而返回的 HttpStatus 400(错误请求)。

我也尝试过使用 RequestLog 插件,但据我了解,记录的只是有效请求(即发送到服务的请求)。

我希望你明白我想说什么。

【问题讨论】:

    标签: servicestack


    【解决方案1】:

    看看7digital have customized ServiceStack's Validation Feature如何支持日志记录。

    相关功能

    新 API 支持 ServiceRunner 的概念,您可以覆盖以添加您自己的事件和异常挂钩,您可以 read about in the wiki。

    还有内置的Request Logger,可让您了解最近处理的请求的详细信息。

    如果您想查看验证功能的日志记录,请在 GitHub 项目上创建一个issue。

    【讨论】:

    • 7digital 链接对我来说已损坏,但在这里找到了它:antonydenyer.co.uk/blog/2012/09/20/…
    • 仅供参考,任何想要记录验证错误的人,IServiceRunner 的 HandleException 方法不会为他们触发。
    【解决方案2】:

    从 ValidationFeature 插件记录错误的快速方法如下:

    public override void Configure(Container container)
    {
        ...etc...
    
        Plugins.Add(new RequestLogsFeature() { etc });
        Plugins.Add(new ValidationFeature()
        {
            ErrorResponseFilter = MyValidationError
        });
    
        ...etc...
    }
    
    public object MyValidationError(ValidationResult validationResult, object errorDto)
    {
        Container.Resolve<IRequestLogger>().Log(null, null, errorDto, TimeSpan.Zero);
        return errorDto;
    }
    

    但是,就我而言,我意识到在服务本身中记录验证错误不是正确的地方;相反,我将这些错误记录在使用该服务的应用程序中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多