Esempio n. 1
0
        static void Main(string[] args)
        {
            try {
                var root = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory())
                           .AddJsonFile("appsettings.json", true, true).Build();


                LOGGER.Initialize(root).RunsOnConsole()
                .PreheatMessageTemplates(Preheater)
                .AddSampleLog(s => s.UseMinimumLevel(LogEventLevel.Information))
                .AllDone();

                var logger = LOGGER.GetLogger <Program>();
//                lock (SyncLock) {
//                    //Text token
//                    logger.Information("text token test--> {{1.helloworld");
//                    logger.Information("text token test--> {{2.helloworld}");
//                    logger.Information("text token test--> {{3.helloworld}}");
//                    logger.Information("text token test--> {{4.helloworld}lewis");
//                    logger.Information("text token test--> {{5.helloworld}lewis");
//                    logger.Information("text token test--> {{6.helloworld}}lewis");
//                }
//
//                lock (SyncLock) {
//                    //format token for $
//                    logger.Information("$ format test--> {$01.TokenBody");
//                    logger.Information("$ format test--> {$02.TokenBody:");
//                    logger.Information("$ format test--> {$03.TokenBody}");
//                    logger.Information("$ format test--> {$04.TokenBody:}");
//                    logger.Information("$ format test--> {$05.TokenBody ");
//                    logger.Information("$ format test--> {$06.TokenBody");
//                    logger.Information("$ format test--> {$07.TokenBody:Format");
//                    logger.Information("$ format test--> {$08.TokenBody:Format:");
//                    logger.Information("$ format test--> {$09.TokenBody:Format}");
//                    logger.Information("$ format test--> {$10.TokenBody:Format:}");
//                    logger.Information("$ format test--> {$11.TokenBody other text");
//                    logger.Information("$ format test--> {$12.TokenBody}other text");
//                    logger.Information("$ format test--> {$13.TokenBody: other text");
//                    logger.Information("$ format test--> {$14.TokenBody:}other text");
//                    logger.Information("$ format test--> {$15.TokenBody:Format other text");
//                    logger.Information("$ format test--> {$16.TokenBody:Format}other text");
//                    logger.Information("$ format test--> {$17.TokenBody:Format: other text");
//                    logger.Information("$ format test--> {$18.TokenBody:Format:}other text");
//                }
//
//                lock (SyncLock) {
//                    //params token for $
//                    logger.Information("$ params test--> {$19.TokenBody:Format:params");
//                    logger.Information("$ params test--> {$20.TokenBody:Format:params:");
//                    logger.Information("$ params test--> {$21.TokenBody:Format:params}");
//                    logger.Information("$ params test--> {$22.TokenBody:Format:params:}");
//                    logger.Information("$ params test--> {$23.TokenBody:Format:params other text");
//                    logger.Information("$ params test--> {$24.TokenBody:Format:params}other text");
//                    logger.Information("$ params test--> {$25.TokenBody:Format:params: other text");
//                    logger.Information("$ params test--> {$26.TokenBody:Format:params:}other text");
//                }
//
//                lock (SyncLock) {
//                    //format token for @
//                    logger.Information("@ format test--> {@101.TokenBody");
//                    logger.Information("@ format test--> {@102.TokenBody:");
//                    logger.Information("@ format test--> {@103.TokenBody}");
//                    logger.Information("@ format test--> {@104.TokenBody:}");
//                    logger.Information("@ format test--> {@105.TokenBody ");
//                    logger.Information("@ format test--> {@106.TokenBody");
//                    logger.Information("@ format test--> {@107.TokenBody:Format");
//                    logger.Information("@ format test--> {@108.TokenBody:Format:");
//                    logger.Information("@ format test--> {@109.TokenBody:Format}");
//                    logger.Information("@ format test--> {@110.TokenBody:Format:}");
//                    logger.Information("@ format test--> {@111.TokenBody other text");
//                    logger.Information("@ format test--> {@112.TokenBody}other text");
//                    logger.Information("@ format test--> {@113.TokenBody: other text");
//                    logger.Information("@ format test--> {@114.TokenBody:}other text");
//                    logger.Information("@ format test--> {@115.TokenBody:Format other text");
//                    logger.Information("@ format test--> {@116.TokenBody:Format}other text");
//                    logger.Information("@ format test--> {@117.TokenBody:Format: other text");
//                    logger.Information("@ format test--> {@118.TokenBody:Format:}other text");
//                }
//
//                lock (SyncLock) {
//                    //params token for @
//                    logger.Information("@ params test--> {@119.TokenBody:Format:params");
//                    logger.Information("@ params test--> {@120.TokenBody:Format:params:");
//                    logger.Information("@ params test--> {@121.TokenBody:Format:params}");
//                    logger.Information("@ params test--> {@122.TokenBody:Format:params:}");
//                    logger.Information("@ params test--> {@123.TokenBody:Format:params other text");
//                    logger.Information("@ params test--> {@124.TokenBody:Format:params}other text");
//                    logger.Information("@ params test--> {@125.TokenBody:Format:params: other text");
//                    logger.Information("@ params test--> {@126.TokenBody:Format:params:}other text");
//                }
//
//                logger.Information("token test--> {{alexLEWIS} }.}}..{$123}.{$123WithSpace ...{$456:000}.{$789:111:333}nice{@999}{{$12333}");
//                logger.Information("token test--> alexLEWIS {$1234567890:");
//                logger.Information("token test--> {$789:111:3[ ]33}");
//                logger.Information("token test--> forerunner {$ErrorToken:ErrorFormat:ErrorParams");


//                logger.LogInformation(@"
//
//Google、{{AWS}}和{@Azure}都已经发表了声明,{$ConsoleHelloWorld:jpr30w},说道:
//“我们的云(基本上)已经打好了补丁,现在轮到你们为虚拟机操作系统打补丁了”。
//遗憾的是,对于为什么要同{时}对虚拟机管理程序和虚拟机操作系统打补丁,他们没有提供多少细节。
//安全研究人员Katie Moussouris援引了Robert O'Callahan博文中的一段话:{$Memeda ,
//“对于CPU供应商和云供应商而言,重要的是准确地说明他们采取了什么防范措施,
//什么攻击他们无法防范以及他们期望下游客户负责解决哪些问题”。
//AWS在声明中明确表示,“我们会保障客户的实例不会受到来自其他实例的威胁”。
//这意味着,VM操作系统仍然需要打补丁来防止App之间的攻击或者对特定VM内核的攻击,
//来自{$Amazon:yyyyMMdd[ ]HH[:]mm[:]ss}的Richard Harvey对此进行了确认。
//
//");

//                logger.LogInformation("position test{10}");
//                logger.LogInformation("position test{10} ");
//                logger.LogInformation("position test{10:}");
//                logger.LogInformation("position test{10:} ");
//                logger.LogInformation("position test{10::}");
//                logger.LogInformation("position test{10::} ");
//                logger.LogInformation("position test{10:w}");
//                logger.LogInformation("position test{10:w:} ");

//                logger.LogInformation("{$Date::yyyy年MM月dd日} token test: {@Hello:U}, {0:U}, {@World},{1}, {$ConsoleHelloWorld}, {$Hello}, {@Alewix}, {3}",
//                    new Args(new {Hello = "_hello_"}, "?world?"));
                logger.LogInformation(@"
{{多字段匿名对象测试1:基于 Cosmos.Logging.Args 的测试}}
Hello: {@Hello},
World: {@World},
    0: {0},
    1: {1},
    2: {2},
Hello: {@Hello},
World: {@World}",
                                      Args.Are(new { Hello = "_hello_", World = "_world_" }, "?world?"), arg2: "_position_1_");

                logger.LogInformation(@"
{{多字段匿名对象测试2:基于普通匿名对象的测试}}
Hello: {@Hello},
World: {@World},
    0: {0},
    1: {1},
    2: {2},
Hello: {@Hello},
World: {@World}",
                                      new { Hello = "_hello_" }, "?world?", new { World = "_world_" });

                logger.LogInformation(@"
{{多字段匿名对象测试3:基于匿名类包含 Cosmos.Logging.Args 的测试}}
Hello: {@Hello},
World: {@World},
    0: {0},
    1: {1},
    2: {2},
    3: {3},
Hello: {@Hello},
World: {@World}",
                                      Args.Are(new { Hello = "_hello_", _ = Args.Are(new { World = "_world_" }) }, "?world?"), arg2: "_position_1_");

                logger.LogInformation(@"
{{多字段匿名对象测试4:基于嵌套了 Cosmos.Logging.Args 的测试}}
Hello: {@Hello},
World: {@World},
    0: {0},
    1: {1},
    2: {2},
    3: {3},
    4: {4},
Hello: {@Hello},
World: {@World}",
                                      Args.Are(new { Hello = "_hello_", _ = Args.Are(new { __World = "_world_" }) }, "?world?", Args.Are(new { World = "_world_" })), arg2: "_position_1_");

//                using (var scope = logger.BeginScope("123")) {
//                    logger.LogInformation("token test: {@Hello}, {0}, {@World}");
//                }

                Console.WriteLine("I'm live");
            } catch (Exception e) {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.Source);

                Console.WriteLine(e.StackTrace);
            }

            Console.ReadLine();
        }