示例#1
0
        public static void Main(string[] args)
        {
            int iterationsLogs = 1;

            // How many interations?
            if (args.Length > 0)
            {
                iterationsLogs = Convert.ToInt32(args[0]);
            }

            #region OPTIONAL SETUP
            // OPTIONAL SETUP: Local Internal Logger loaded from config which may include Console, Debug, TraceFile
            ILogger localLogger = InternalLogger.GetLogger(Directory.GetCurrentDirectory());
            #endregion

            // Create Application Insights Logger
            string logLevelCategory = "Default";
            _logger = LoggingManager.ConfigureLogger(localLogger, Directory.GetCurrentDirectory(), logLevelCategory).GetAwaiter().GetResult();

            for (int loop = 0; loop < iterationsLogs; loop++)
            {
                Console.WriteLine();
                Console.WriteLine($">>>>> Run sample logging iteration {loop + 1} of {iterationsLogs} {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}");

                // Sample-1 - LogMetric: Aggregated Metrics: Graphite and AI customEvents (EventTelemetry)
                // >>> AggMetric EventTelemetry (customEvents) = Aggregated MetricTelemtry into EventTelemetry
                // >>> Graphite  = Aggregated MetricTelemtry into 9 event types (Avg, Min, Max, P99, etc.)
                _logger.LogMetric("TestMetricConsoleApp", 3);

                // Sample-2 - LogInformation: New Logger with Category and LogInformation, sends LogOpenSchema
                // >>> BlobSink LogOpenSchema
                // >>> ElasticSearch LogOpenSchema
                logLevelCategory = "SampleApp";
                var _loggerSampleApp = LoggingManager.GetLoggerFactory()?.CreateLogger(logLevelCategory);
                _loggerSampleApp.LogInformation(_message);
                Console.WriteLine(_message);

                // Sample-3 - TimedOperations: sends TimedOperationOpenSchema and sends LogMetric(MetricModel)
                // >>> BlobSink TimedOperationOpenSchema
                // >>> AggMetric EventTelemetry (customEvents) = Aggregated MetricTelemtry into EventTelemetry
                // >>> Graphite  = Aggregated MetricTelemtry into 9 event types (Avg, Min, Max, P99, etc.)
                using (_loggerSampleApp.BeginTimedOperation("SampleOp"))
                {
                    Thread.Sleep(10);
                }

                // Sample-4 - LogError: sends ExceptionsOpenSchema
                // >>> BlobSink ExceptionsOpenSchema
                // >>> ElasticSearch ExceptionsOpenSchema
                try
                {
                    throw new ArgumentException("A test exception!");
                }
                catch (Exception e)
                {
                    _logger.LogError(0, e, "MyTest");
                    Console.WriteLine($"Exception {e.Source} {e.Message}");
                }
            }

            Console.WriteLine($"Delay some as logs are sent on a timer (or when buffer is full)... {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}");
            Console.WriteLine();
            Console.ReadKey();
        }