Probably nice to document this method as it's the most important for the user. Details worth noting in the documentation:

* How is `filename` handled? What log file gets written to, what do rotated files look like.
* Explain `rotateIfExists`. If `rotateIfExists` is false, does it overwrite or append to the current file?
* `errHandler` can be nil. What kind of errors can pop up as input to the callback?
* What does the `headerGenerator` do?