Exemplo n.º 1
0
        public static ILogger GetLogger(IServiceEventTracing serviceEventTracing = null, ServiceContext context = null, string sourceName = null)
        {
            sourceName = ResolveSourceName(sourceName);

            if (!Loggers.ContainsKey(sourceName))
            {
                lock (lockSync)
                {
                    if (!Loggers.ContainsKey(sourceName))
                    {
                        var logger = new CloudLogger(serviceEventTracing, context, sourceName);
                        Loggers.Add(sourceName, logger);
                    }
                }
            }
            else if (serviceEventTracing != null && context != null)
            {
                lock (lockSync)
                {
                    if (Loggers.ContainsKey(sourceName))
                    {
                        Loggers[sourceName].SetServiceEventTracing(serviceEventTracing);
                        Loggers[sourceName].SetServiceContext(context);
                    }
                }
            }

            return(Loggers[sourceName]);
        }
        internal CloudLogger(IServiceEventTracing serviceEventTracing, ServiceContext serviceContext, string sourceName)
        {
            this.serviceEventTracing = serviceEventTracing;
            this.serviceContext      = serviceContext;
            this.sourceName          = sourceName;

            var logOutputTemplate  = "{NewLine}{NewLine}{NewLine}{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}]{NewLine}{Message}{NewLine}{Exception}";
            var sharedLogFilePath  = GetSharedLogFilePath();
            var serviceLogFilePath = GetServiceLogFilePath(this.sourceName);
            var logLevel           = GetLogLevel();

            var sharedSerilogLogger = new LoggerConfiguration().MinimumLevel.Verbose()
                                      .WriteTo.RollingFile(pathFormat: sharedLogFilePath,
                                                           restrictedToMinimumLevel: sharedLogLevel,
                                                           outputTemplate: logOutputTemplate,
                                                           retainedFileCountLimit: null,
                                                           fileSizeLimitBytes: 52430000,                                      //50 MiB
                                                           shared: true).CreateLogger();

            var serviceSerilogLogger = new LoggerConfiguration().MinimumLevel.Verbose()
                                       .WriteTo.RollingFile(pathFormat: serviceLogFilePath,
                                                            restrictedToMinimumLevel: logLevel,
                                                            outputTemplate: logOutputTemplate,
                                                            retainedFileCountLimit: null,
                                                            fileSizeLimitBytes: 52430000,                          //50 MiB
                                                            shared: false).CreateLogger();

            this.serilogLoggers = new List <ILogger>()
            {
                sharedSerilogLogger,
                serviceSerilogLogger,
            };
        }
 public void SetServiceEventTracing(IServiceEventTracing serviceEventTracing)
 {
     this.serviceEventTracing = serviceEventTracing;
 }
 internal CloudLogger(IServiceEventTracing serviceEventTracing, ServiceContext serviceContext, string sourceName)
 {
     this.serviceEventTracing = serviceEventTracing;
     this.serviceContext      = serviceContext;
     this.sourceName          = sourceName;
 }