Инициализация пользовательского приложения Log4Net - PullRequest
0 голосов
/ 15 декабря 2018

Я хочу написать приложение 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);
        }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...