Настраиваемое приложение Log4Net запускается несколько раз для .Net Core 2 API - PullRequest
0 голосов
/ 14 апреля 2019

Я пишу пользовательское приложение Log4Net для вызова службы WCF в .Net Core 2 API со следующей конфигурацией. Я не могу вызывать или вызывать несколько раз пользовательского приложения.

Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    ILoggerRepository repository = log4net.LogManager.GetRepository(Assembly.GetCallingAssembly());
    log4net.Config.XmlConfigurator.Configure(repository, new System.IO.FileInfo("log4net.config"));

    loggerFactory.AddLog4Net();
    app.UseMvc();
}

Custom Appender

public class Log4NetWCFAppender : AppenderSkeleton
{
    private readonly ICustomLog _customLog;

    public Log4NetWCFAppender (ICustomLog customLog) { _customLog = customLog; }
    public Log4NetWCFAppender() : this(new CustomLogger())// TODO: Use DI
    { }
    protected override void Append(LoggingEvent loggingEvent)
    {
        _customLog.LogInformation("Event started at" + loggingEvent.StartTime); 
    }

API-контроллер

public class ValuesController : ControllerBase
{
    private ILogger<ValuesController> _logger;
    public ValuesController(ILogger<ValuesController> logger) 
    {
        _logger = logger;
    }

    [HttpGet]
    public ActionResult Get()
    {  
        _logger.LogInformation("test");
        return null;
    }

log4net.config в корне проекта

<?xml version="1.0" encoding="utf-8"?>
<log4net debug="true">
  <root>
    <level value="ALL" />
    <appender-ref ref="AuditAppender" />
  </root>
  <appender name="AuditAppender" type="Logger.Log4NetWCFAppender,Logger">
  </appender>

</log4net>
...