private void CreateCompositeProperties()

in src/log4net/Core/LoggingEvent.cs [1141:1182]


  private void CreateCompositeProperties()
  {
    var compositeProperties = new CompositeProperties();

    if (_eventProperties is not null)
    {
      compositeProperties.Add(_eventProperties);
    }
    var logicalThreadProperties = LogicalThreadContext.Properties.GetProperties(false);
    if (logicalThreadProperties is not null)
    {
      compositeProperties.Add(logicalThreadProperties);
    }
    if (ThreadContext.Properties.GetProperties(false) is PropertiesDictionary threadProperties)
    {
      compositeProperties.Add(threadProperties);
    }

    // TODO: Add Repository Properties

    // event properties
    bool shouldFixUserName = (_fixFlags & FixFlags.UserName) != 0;
    bool shouldFixIdentity = (_fixFlags & FixFlags.Identity) != 0;
    if (shouldFixIdentity || shouldFixUserName)
    {
      var eventProperties = new PropertiesDictionary();
      if (shouldFixUserName)
      {
        eventProperties[UserNameProperty] = UserName;
      }

      if (shouldFixIdentity)
      {
        eventProperties[IdentityProperty] = Identity;
      }

      compositeProperties.Add(eventProperties);
    }

    compositeProperties.Add(GlobalContext.Properties.GetReadOnlyProperties());
    this._compositeProperties = compositeProperties;
  }