/// <summary> /// Writes structured data to the log with the specified severity and data of the sender. /// </summary> /// <typeparam name="T">The type of data to write.</typeparam> /// <param name="logLevel">The severity of the data.</param> /// <param name="objectToSend">The data to log.</param> /// <param name="senderDetails">Object containing data of the sender.</param> public void Write <T>(LogLevel logLevel, T objectToSend, LoggerContext senderDetails) { var eventType = logLevel.ToTraceEventType(); if (eventType == null) { return; } if (senderDetails.HasCustomerId() && senderDetails.HasSessionId()) { Write(eventType.Value, new CustomerLogData(objectToSend, senderDetails.CustomerId, senderDetails.SessionId)); } else if (senderDetails.HasCustomerId()) { Write(eventType.Value, new CustomerLogData(objectToSend, senderDetails.CustomerId)); } else if (senderDetails.HasSessionId()) { Write(eventType.Value, new CustomerLogData(objectToSend, senderDetails.SessionId)); } else { Write(eventType.Value, objectToSend); } }