Namespace clash between modules
evilrat
evilrat666 at gmail.com
Tue Aug 13 10:14:50 PDT 2013
On Tuesday, 13 August 2013 at 16:10:19 UTC, Marek Janukowicz
wrote:
> I implemented some generic logging module and want to use
> single Logger
> object per module. Some simplified excerpt from my code:
>
> module log;
> mixin template makeLogger( params,,, name ) {
> Logger logger;
> static this () {
> .. logger initialization...
> }
> }
>
> -------------
>
> module another;
> import log;
>
> mixin makeLogger!( ...., __MODULE__ );
> logger( DEBUG, "aksjfakjdf" );
>
> -------------
>
> module yet_another;
> import log;
>
> mixin makeLogger!( ...., __MODULE__ );
> logger( INFO, "sdfsdfsdf" );
>
> This works quite well, but if I import one module into another
> I get an
> obvious name clash on the variable name "logger". I have many
> modules where
> I want to use logging, so things like static import are not an
> option.
>
> Is there any pattern I could use here?
is it necessary use multiple loggers? maybe you should move ur
Logger instance to module scope(log module) and just handle log
sources some other way(i.e. add source string mapping in log
module)? because i mean this clash is just due to multiple
instantions of this template
More information about the Digitalmars-d-learn
mailing list