public void Log_Prefix() { UT_INIT(); // we have tell alox to include more directories in the scope path Log.ClearSourcePathTrimRules(Inclusion.Include, false); Log.SetSourcePathTrimRule("*/alox/src.cs/", Inclusion.Exclude); CustomPrefix custom1 = new CustomPrefix(); CustomPrefix custom2 = new CustomPrefix(); Log.AddDebugLogger(); MemoryLogger ml = new MemoryLogger(); ml.MetaInfo.Format._(); Log.SetVerbosity(ml, Verbosity.Verbose); Log.SetVerbosity(Log.DebugLogger, Verbosity.Verbose, ALox.InternalDomains); Log.SetDomain("/PREFIX", Scope.Method); // src scopes Log.SetPrefix("REPLACE:", Scope.Global); Log.Info("*msg*"); PFXCHECK("REPLACE:*msg*", ml); Log.SetPrefix("GLOBAL:", Scope.Global); Log.Info("*msg*"); PFXCHECK("GLOBAL:*msg*", ml); Log.SetPrefix(null, Scope.Global); Log.Info("*msg*"); PFXCHECK("*msg*", ml); Log.SetPrefix("REPLACE:", Scope.Filename); Log.Info("*msg*"); PFXCHECK("REPLACE:*msg*", ml); Log.SetPrefix("FILE:", Scope.Filename); Log.Info("*msg*"); PFXCHECK("FILE:*msg*", ml); Log.SetPrefix("REPLACE:", Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:REPLACE:*msg*", ml); Log.SetPrefix("METHOD:", Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:*msg*", ml); Log.SetPrefix(null, Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:*msg*", ml); Log.SetPrefix("METHOD:", Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:*msg*", ml); // set custom Log.SetPrefix(null, Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:*msg*", ml); Log.SetPrefix(custom1, Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:CUSTOM:*msg*", ml); Log.SetPrefix(custom1, Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:CUSTOM:*msg*", ml); Log.SetPrefix(custom2, Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:CUSTOM:*msg*", ml); Log.SetPrefix(null, Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:*msg*", ml); Log.SetPrefix(custom1, Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:CUSTOM:*msg*", ml); Log.SetPrefix("METHOD:", Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:*msg*", ml); Log.SetPrefix("METHOD:", Scope.Method); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:*msg*", ml); // domain related Log.SetPrefix("DOM1:"); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:DOM1:*msg*", ml); Log.SetPrefix("DOM2:"); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:DOM1:DOM2:*msg*", ml); Log.SetPrefix("DOM3:"); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:DOM1:DOM2:DOM3:*msg*", ml); Log.SetPrefix(""); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:DOM1:DOM2:*msg*", ml); Log.SetPrefix(""); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:DOM1:*msg*", ml); Log.SetPrefix("DOMR:", "/"); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:DOMR:DOM1:*msg*", ml); Log.SetPrefix("DOMX:", "", Inclusion.Exclude); Log.Info("*msg*"); PFXCHECK("DOMX:*msg*", ml); Log.SetPrefix(""); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:DOMR:DOM1:*msg*", ml); Log.SetPrefix("DRX:", "/", Inclusion.Exclude); Log.Info("*msg*"); PFXCHECK("DRX:DOM1:*msg*", ml); Log.SetPrefix("", "/"); Log.Info("*msg*"); PFXCHECK("FILE:METHOD:DOMR:DOM1:*msg*", ml); // source path Log.SetPrefix("REPLACE:", Scope.Path); Log.Info("*msg*"); PFXCHECK("REPLACE:FILE:METHOD:DOMR:DOM1:*msg*", ml); Log.SetPrefix("PATH:", Scope.Path); Log.Info("*msg*"); PFXCHECK("PATH:FILE:METHOD:DOMR:DOM1:*msg*", ml); Log.SetPrefix("REPLACE:", Scope.Path, 1); Log.Info("*msg*"); PFXCHECK("REPLACE:PATH:FILE:METHOD:DOMR:DOM1:*msg*", ml); Log.SetPrefix("PO1:", Scope.Path, 1); Log.Info("*msg*"); PFXCHECK("PO1:PATH:FILE:METHOD:DOMR:DOM1:*msg*", ml); Log.SetPrefix("REPLACE:", Scope.Path, 2); Log.Info("*msg*"); PFXCHECK("REPLACE:PO1:PATH:FILE:METHOD:DOMR:DOM1:*msg*", ml); Log.SetPrefix("PO2:", Scope.Path, 2); Log.Info("*msg*"); PFXCHECK("PO2:PO1:PATH:FILE:METHOD:DOMR:DOM1:*msg*", ml); Log.SetPrefix("REPLACE:", Scope.Global); Log.Info("*msg*"); PFXCHECK("REPLACE:PO2:PO1:PATH:FILE:METHOD:DOMR:DOM1:*msg*", ml); // remove all previous scope domains Log.SetPrefix(null, Scope.Global); Log.SetPrefix(null, Scope.Path); Log.SetPrefix(null, Scope.Path, 1); Log.SetPrefix(null, Scope.Path, 2); Log.SetPrefix(null, Scope.Filename); Log.SetPrefix(null, Scope.Method); Log.SetPrefix(null); // domain "/PREFIX" Log.SetPrefix(null); // domain "/PREFIX" nothing here any more Log.SetPrefix(null, "/"); // domain "/" Log.Info("*msg*"); PFXCHECK("*msg*", ml); // Thread-related Log.SetPrefix("TO:", Scope.ThreadOuter); Log.Info("*msg*"); PFXCHECK("TO:*msg*", ml); Log.SetPrefix("GL:", Scope.Global); Log.Info("*msg*"); PFXCHECK("GL:TO:*msg*", ml); Log.SetPrefix("MET:", Scope.Method); Log.Info("*msg*"); PFXCHECK("GL:TO:MET:*msg*", ml); Log.SetPrefix(":TI", Scope.ThreadInner); Log.Info("*msg*"); PFXCHECK("GL:TO:MET:*msg*:TI", ml); Log.SetPrefix("TO2:", Scope.ThreadOuter); Log.Info("*msg*"); PFXCHECK("GL:TO:TO2:MET:*msg*:TI", ml); Log.SetPrefix(":TI2", Scope.ThreadInner); Log.Info("*msg*"); PFXCHECK("GL:TO:TO2:MET:*msg*:TI:TI2", ml); Log.SetPrefix("TO3:", Scope.ThreadOuter); Log.Info("*msg*"); PFXCHECK("GL:TO:TO2:TO3:MET:*msg*:TI:TI2", ml); Log.SetPrefix(":TI3", Scope.ThreadInner); Log.Info("*msg*"); PFXCHECK("GL:TO:TO2:TO3:MET:*msg*:TI:TI2:TI3", ml); Log.SetPrefix(null, Scope.ThreadInner); Log.Info("*msg*"); PFXCHECK("GL:TO:TO2:TO3:MET:*msg*:TI:TI2", ml); Log.SetPrefix(null, Scope.ThreadInner); Log.Info("*msg*"); PFXCHECK("GL:TO:TO2:TO3:MET:*msg*:TI", ml); Log.SetPrefix(null, Scope.ThreadOuter); Log.Info("*msg*"); PFXCHECK("GL:TO:TO2:MET:*msg*:TI", ml); Log.SetPrefix(null, Scope.ThreadOuter); Log.Info("*msg*"); PFXCHECK("GL:TO:MET:*msg*:TI", ml); Log.SetPrefix(null, Scope.ThreadOuter); Log.Info("*msg*"); PFXCHECK("GL:MET:*msg*:TI", ml); Log.SetPrefix(null, Scope.Global); Log.Info("*msg*"); PFXCHECK("MET:*msg*:TI", ml); Log.SetPrefix(null, Scope.Method); Log.Info("*msg*"); PFXCHECK("*msg*:TI", ml); Log.SetPrefix(null, Scope.ThreadInner); Log.Info("*msg*"); PFXCHECK("*msg*", ml); // check if breaking dom-releated, removes all thread inner correctly Log.SetPrefix(":TI", Scope.ThreadInner); Log.Info("*msg*"); PFXCHECK("*msg*:TI", ml); Log.SetPrefix("DOM1:", "", Inclusion.Include); Log.Info("*msg*"); PFXCHECK("DOM1:*msg*:TI", ml); Log.SetPrefix("DOMX:", "", Inclusion.Exclude); Log.Info("*msg*"); PFXCHECK("DOMX:*msg*", ml); Log.SetPrefix(":TI", Scope.ThreadInner); Log.Info("*msg*"); PFXCHECK("DOMX:*msg*", ml); Log.SetPrefix(null, ""); Log.Info("*msg*"); PFXCHECK("DOM1:*msg*:TI:TI", ml); Log.RemoveLogger(ml); }
public void Log_Prefix() { UT_INIT(); // we have tell alox to include more directories in the scope path Log.ClearSourcePathTrimRules( Reach.Global, false ); Log.SetSourcePathTrimRule( "*/alox/src.cs/", Inclusion.Exclude ); CustomPrefix custom1= new CustomPrefix(); CustomPrefix custom2= new CustomPrefix(); Log.AddDebugLogger(); MemoryLogger ml= new MemoryLogger(); ml.MetaInfo.Format._(); Log.SetVerbosity(ml, Verbosity.Verbose ); Log.SetVerbosity(Log.DebugLogger, Verbosity.Verbose, ALox.InternalDomains ); Log.SetDomain( "/PREFIX", Scope.Method ); // src scopes Log.SetPrefix( "REPLACE:", Scope.Global ); Log.Info( "*msg*" ); PFXCHECK( "REPLACE:*msg*" ,ml ); Log.SetPrefix( "GLOBAL:", Scope.Global ); Log.Info( "*msg*" ); PFXCHECK( "GLOBAL:*msg*" ,ml ); Log.SetPrefix( null , Scope.Global ); Log.Info( "*msg*" ); PFXCHECK( "*msg*" ,ml ); Log.SetPrefix( "REPLACE:", Scope.Filename ); Log.Info( "*msg*" ); PFXCHECK( "REPLACE:*msg*" ,ml ); Log.SetPrefix( "FILE:", Scope.Filename ); Log.Info( "*msg*" ); PFXCHECK( "FILE:*msg*" ,ml ); Log.SetPrefix( "REPLACE:", Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:REPLACE:*msg*" ,ml ); Log.SetPrefix( "METHOD:", Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:*msg*" ,ml ); Log.SetPrefix( null , Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:*msg*" ,ml ); Log.SetPrefix( "METHOD:", Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:*msg*" ,ml ); // set custom Log.SetPrefix( null , Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:*msg*" ,ml ); Log.SetPrefix( custom1 , Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:CUSTOM:*msg*" ,ml ); Log.SetPrefix( custom1 , Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:CUSTOM:*msg*" ,ml ); Log.SetPrefix( custom2 , Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:CUSTOM:*msg*" ,ml ); Log.SetPrefix( null , Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:*msg*" ,ml ); Log.SetPrefix( custom1 , Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:CUSTOM:*msg*" ,ml ); Log.SetPrefix( "METHOD:", Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:*msg*" ,ml ); Log.SetPrefix( "METHOD:", Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:*msg*" ,ml ); // domain related Log.SetPrefix( "DOM1:" ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:DOM1:*msg*" ,ml ); Log.SetPrefix( "DOM2:" ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:DOM1:DOM2:*msg*" ,ml ); Log.SetPrefix( "DOM3:" ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:DOM1:DOM2:DOM3:*msg*" ,ml ); Log.SetPrefix( "" ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:DOM1:DOM2:*msg*" ,ml ); Log.SetPrefix( "" ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:DOM1:*msg*" ,ml ); Log.SetPrefix( "DOMR:", "/" ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:DOMR:DOM1:*msg*" ,ml ); Log.SetPrefix( "DOMX:", "", Inclusion.Exclude ); Log.Info( "*msg*" ); PFXCHECK( "DOMX:*msg*" ,ml ); Log.SetPrefix( "" ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:DOMR:DOM1:*msg*" ,ml ); Log.SetPrefix( "DRX:", "/", Inclusion.Exclude ); Log.Info( "*msg*" ); PFXCHECK( "DRX:DOM1:*msg*" ,ml ); Log.SetPrefix( "" , "/" ); Log.Info( "*msg*" ); PFXCHECK( "FILE:METHOD:DOMR:DOM1:*msg*" ,ml ); // source path Log.SetPrefix( "REPLACE:", Scope.Path ); Log.Info( "*msg*" ); PFXCHECK( "REPLACE:FILE:METHOD:DOMR:DOM1:*msg*" ,ml ); Log.SetPrefix( "PATH:", Scope.Path ); Log.Info( "*msg*" ); PFXCHECK( "PATH:FILE:METHOD:DOMR:DOM1:*msg*" ,ml ); Log.SetPrefix( "REPLACE:", Scope.Path, 1 ); Log.Info( "*msg*" ); PFXCHECK( "REPLACE:PATH:FILE:METHOD:DOMR:DOM1:*msg*" ,ml ); Log.SetPrefix( "PO1:", Scope.Path, 1 ); Log.Info( "*msg*" ); PFXCHECK( "PO1:PATH:FILE:METHOD:DOMR:DOM1:*msg*" ,ml ); Log.SetPrefix( "REPLACE:", Scope.Path, 2 ); Log.Info( "*msg*" ); PFXCHECK( "REPLACE:PO1:PATH:FILE:METHOD:DOMR:DOM1:*msg*",ml ); Log.SetPrefix( "PO2:", Scope.Path, 2 ); Log.Info( "*msg*" ); PFXCHECK( "PO2:PO1:PATH:FILE:METHOD:DOMR:DOM1:*msg*" ,ml ); Log.SetPrefix( "REPLACE:", Scope.Global ); Log.Info( "*msg*" ); PFXCHECK( "REPLACE:PO2:PO1:PATH:FILE:METHOD:DOMR:DOM1:*msg*" , ml ); // remove all previous scope domains Log.SetPrefix( null ,Scope.Global ); Log.SetPrefix( null ,Scope.Path ); Log.SetPrefix( null ,Scope.Path ,1 ); Log.SetPrefix( null ,Scope.Path ,2 ); Log.SetPrefix( null ,Scope.Filename ); Log.SetPrefix( null ,Scope.Method ); Log.SetPrefix( null ); // domain "/PREFIX" Log.SetPrefix( null ); // domain "/PREFIX" nothing here any more Log.SetPrefix( null, "/" ); // domain "/" Log.Info( "*msg*" ); PFXCHECK( "*msg*" ,ml ); // Thread-related Log.SetPrefix( "TO:" ,Scope.ThreadOuter ); Log.Info( "*msg*" ); PFXCHECK( "TO:*msg*" ,ml ); Log.SetPrefix( "GL:" ,Scope.Global ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:*msg*" ,ml ); Log.SetPrefix( "MET:" ,Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:MET:*msg*" ,ml ); Log.SetPrefix( ":TI" ,Scope.ThreadInner ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:MET:*msg*:TI" ,ml ); Log.SetPrefix( "TO2:" ,Scope.ThreadOuter ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:TO2:MET:*msg*:TI" ,ml ); Log.SetPrefix( ":TI2" ,Scope.ThreadInner ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:TO2:MET:*msg*:TI:TI2" ,ml ); Log.SetPrefix( "TO3:" ,Scope.ThreadOuter ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:TO2:TO3:MET:*msg*:TI:TI2" ,ml ); Log.SetPrefix( ":TI3" ,Scope.ThreadInner ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:TO2:TO3:MET:*msg*:TI:TI2:TI3",ml ); Log.SetPrefix( null ,Scope.ThreadInner ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:TO2:TO3:MET:*msg*:TI:TI2" ,ml ); Log.SetPrefix( null ,Scope.ThreadInner ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:TO2:TO3:MET:*msg*:TI" ,ml ); Log.SetPrefix( null ,Scope.ThreadOuter ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:TO2:MET:*msg*:TI" ,ml ); Log.SetPrefix( null ,Scope.ThreadOuter ); Log.Info( "*msg*" ); PFXCHECK( "GL:TO:MET:*msg*:TI" ,ml ); Log.SetPrefix( null ,Scope.ThreadOuter ); Log.Info( "*msg*" ); PFXCHECK( "GL:MET:*msg*:TI" ,ml ); Log.SetPrefix( null ,Scope.Global ); Log.Info( "*msg*" ); PFXCHECK( "MET:*msg*:TI" ,ml ); Log.SetPrefix( null ,Scope.Method ); Log.Info( "*msg*" ); PFXCHECK( "*msg*:TI" ,ml ); Log.SetPrefix( null ,Scope.ThreadInner ); Log.Info( "*msg*" ); PFXCHECK( "*msg*" ,ml ); // check if breaking dom-releated, removes all thread inner correctly Log.SetPrefix( ":TI" ,Scope.ThreadInner ); Log.Info( "*msg*" ); PFXCHECK( "*msg*:TI" ,ml ); Log.SetPrefix( "DOM1:", "" ,Inclusion.Include ); Log.Info( "*msg*" ); PFXCHECK( "DOM1:*msg*:TI" ,ml ); Log.SetPrefix( "DOMX:", "" ,Inclusion.Exclude ); Log.Info( "*msg*" ); PFXCHECK( "DOMX:*msg*" ,ml ); Log.SetPrefix( ":TI" ,Scope.ThreadInner ); Log.Info( "*msg*" ); PFXCHECK( "DOMX:*msg*" ,ml ); Log.SetPrefix( null, "" ); Log.Info( "*msg*" ); PFXCHECK( "DOM1:*msg*:TI:TI" ,ml ); Log.RemoveLogger( ml ); }