How to show exception message and stack trace in PlayFramework


#1

As you all aware, the standard error page is like this ‘this exception has been logged with id XXXX’ , how can I show more detail messages, such as the message of exception and stack trace?


#2

here upload a sample to elaborate my question, actually I want to show stack trace in this error page,could someone tell me how to make it?


(Rich Dougherty) #3

Are you running this in production or in "dev mode"with sbt run? In dev mode we show more information. In production it’s a security risk to show this information. But you can probably override the HttpErrorHandler to change this behaviour.

Here’s the standard logic inside the DefaultHttpErrorHandler class:


#4

Thanks so much


(Greg Methvin) #5

Actually you don’t even need to override the DefaultHttpErrorHandler. You can construct an error handler that always shows “development” errors as follows:

new DefaultHttpErrorHandler(
  HttpErrorConfig(
    showDevErrors = true,
    configuration.getOptional[String]("play.editor")
  ),
  sourceMapper,
  Some(router)
)

If you are using runtime DI, you can also override the injected constructor (annotated with @Inject) and change it to call the main constructor like above, then configure play.http.errorHandler = com.example.MyDefaultHttpErrorHandler.

Just keep in mind that this is usually not something you want to do in a public production app. It can be a security risk to expose internal details like stack traces to untrusted users.