I do like how the macro_rules approach avoids having to include the file!(), line!(), etc.

How about we just provide a func_path!() macro, the leaves off the file, line, column, but includes all modules, traits, extensions and lambdas, so that format!("{}::{}",func_path!(), func!()) is what provides the complete path-to-current-function information.