On 10/30/2014 12:11 AM, Robert burner Schadek wrote:
That can actually be added to the current state of std.logger without
breaking any api. The string mixin, version string matching isn't really
pretty, but it gets the job done. Anyway IMO your approach presented
here and my approach can go hand in hang. Yours should be propagated as
the idiomatic way and if you really need the crowbar, which you need
sometimes, use StdLoggerDisableXXXXX.
I just found a very compelling solution to the LogLevel disabling problem.
Basically we can declare a logLevel for each module or package and let
the logger do a reverse look up.
```d
module mymod;
import logger;
// can be anything that converts to a LogLevel
// calls with lower log level can be optimized away if this is a compile
time constant
// runtime values also work nicely but incur a small overhead
// if this declaration is not present, logLevel from the package is used
or a default LogLevel.
enum logLevel = LogLevel.critical;
void foo()
{
info("information from foo"); // optimized out
fatal("error"); // works
}
```
https://gist.github.com/MartinNowak/443f11aa017d14007c35
There is a tiny gotcha, this works because the logger module imports the
callee module. So we'd need to avoid module constructors in the logger
module or use a workaround.