I think you missed the “any handler” part. Currently, the types that my library package could use depend on the handler used by the caller. This limits types to an unspecified subset, making things quite impractical.
for a reasonable substitute subset, use the core language types, and implement LogValuer for anything complex.