Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Logging Servicestack Bad Requests

Tags:

servicestack

Is there a way to log the validation results which get populated in the ResponseStatus when you have the ValidationFeature plugin enabled?

From what i can understand, any requests coming in get validated and if the validation passes then it goes to the service. Using request filters i can log the requests coming in however using the response filters i can only log valid requests.

I trying to log all responses especially HttpStatus 400 (Bad request) which is returned as a result of a validation error.

I have also tried to play a bit with the RequestLog plugin but from what i understood what gets logged are only valid request (i.e requests that went to the service).

I hope you understand what i am trying to say.

like image 283
Andreas Pilavakis Avatar asked Mar 07 '26 11:03

Andreas Pilavakis


2 Answers

Look to see how 7digital have customized ServiceStack's Validation Feature to support logging.

Related Features

The new API supports the concept of a ServiceRunner you can override to add your own event and exception hooks you can read about in the wiki.

There is also the built-in Request Logger that lets you expect details of the more recently processed requests.

Create an issue on the GitHub project if you want to see logging in the validation feature.

like image 116
mythz Avatar answered Mar 10 '26 16:03

mythz


A quick way to log errors from the ValidationFeature plugin is simply thus:

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;
}

However, in my case, I realized that logging validation errors in the service itself is not the proper place; I instead log these errors in the applications that consume the service.

like image 37
Facio Ratio Avatar answered Mar 10 '26 15:03

Facio Ratio



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!