improve logging with a preprocessor, prevents execution of arguments passed to log when the log level is suppressed, fixes line numbers in chrome debugger