Инициализация пользовательского приложения 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);
}
}
}