Log rotation is usually treated as a solved problem.

Write to app.log.

When it gets too large, or when the day changes, rename it to something else.

Then open a new app.log.

That model works well enough in many deployments. If it works for yours, I would not replace it just for the sake of replacing it.