Инициализация пользовательского приложения Log4Net

Я хочу написать приложение CosmosDB для Log4Net, потому что я не смог найти тот, который работает, и мне нужно понять, как лучше всего его инициализировать.

Ниже вы можете найти код моей работы.

Теперь инициализация клиента Cosmos DB находится внутри метода Append, но я считаю, что будет лучше вызвать его только один раз.

Я попытался поместить его в инициализацию класса MyCosmosDBAppender, но в тот момент свойства еще не содержали значения.

Итак, мой вопрос... существует метод, который вызывается только один раз, который может быть использован для инициализации?

Или единственное решение - вставить проверку в Append, чтобы выполнить ее только в первый раз?

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using log4net.Core;
using log4net.Appender;
using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;

namespace MyCosmosDB
{
    public class MyCosmosDBAppender : AppenderSkeleton
    {
        public string EndPoint { get; set; }

        public string AuthKey { get; set; }

        public string Database { get; set; }

        public string Collection { get; set; }

        private static DocumentClient client;

        public MyCosmosDBAppender()
        {
        }

        override protected void Append(LoggingEvent loggingEvent)
        {
            ConnectionPolicy policy = new ConnectionPolicy { ConnectionMode = ConnectionMode.Direct, ConnectionProtocol = Protocol.Tcp };
            client = new DocumentClient(new Uri(this.EndPoint), this.AuthKey, policy);
            client.OpenAsync();

            LogObject obj = new LogObject();
            obj.Id = "AKWP";
            obj.Name = "Test name";
            obj.Publisher = "Pubblished by...";

            CreateItemAsync(obj);
        }

        public void CreateItemAsync(LogObject item)
        {
            client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(this.Database, this.Collection), item);
        }
   }
}

0 ответов

Другие вопросы по тегам