This could cause a significant performance hit. Previously, we would not evaluate the "msg" function unless the specified level was enabled, which allows us to avoid string building and calling various toString methods when the log messages won't be seen. Can we re-add these checks using `log.underlying`?