title: Generic customisation of case class ToString
body: <p>On this link: <a href="https://stackoverflow.com/a/4055850/82609">https://stackoverflow.com/a/4055850/82609</a></p>
  
  <p>It explains that</p>
  
  <pre><code>case class Person(name: String, age: Int) {
     override def productPrefix = "person: "
  }
  
  // prints "person: (Aaron,28)" instead of "Person(Aaron, 28)"
  println(Person("Aaron", 28)) 
  </code></pre>
  
  <p>Is there a way to do something like mixing the case class with some trait do provide a better ToString than the default one?</p>
  
  <p>I don't really like to not have the field names printed, and for large case classes it is sometimes hard to read the logs.</p>
  
  <p>Is it possible to have an output like this?</p>
  
  <pre><code>Person(
    name="Aaron",
    age=28
  )
  </code></pre>