string BuildLogMessage(TransmissionData transmissionData)
        {
            var sb = new StringBuilder(transmissionData.ToLogString());

            if (transmissionData.Stream.Length <= InlineStreamLimit)
            {
                sb.AppendFormat("Data:\n");
                byte[] bytes = new byte[transmissionData.Stream.Length];
                transmissionData.Stream.Read(bytes, 0, bytes.Length);
                try {
                    sb.AppendLine(new UTF8Encoding(true).GetString(bytes));
                }
                finally {
                    transmissionData.Stream.Seek(0, SeekOrigin.Begin);
                }
            }
            else
            {
                var fullyQualifiedLogPath = StreamLogsFolder;
                if (!Path.IsPathRooted(fullyQualifiedLogPath))
                {
                    fullyQualifiedLogPath = Path.Combine(ApplicationInformation.Directory, fullyQualifiedLogPath);
                }
                var streamFileName = Path.Combine(fullyQualifiedLogPath, Globals.CreateUniqueId("Stream_") + ".dat");
                using (var outStream = File.Open(streamFileName, FileMode.CreateNew, FileAccess.Write)) {
                    transmissionData.Stream.CopyTo(outStream);
                    transmissionData.Stream.Seek(0, SeekOrigin.Begin);
                }
                sb.AppendLine(string.Format("Data: See: {0}", streamFileName));
            }
            sb.AppendLine("*******************************");
            return(sb.ToString());
        }
 string BuildLogMessage(TransmissionData transmissionData) {
     var sb = new StringBuilder(transmissionData.ToLogString());
     if (transmissionData.Stream.Length <= InlineStreamLimit) {
         sb.AppendFormat("Data:\n");
         byte[] bytes = new byte[transmissionData.Stream.Length];
         transmissionData.Stream.Read(bytes, 0, bytes.Length);
         try {
             sb.AppendLine(new UTF8Encoding(true).GetString(bytes));
         }
         finally {
             transmissionData.Stream.Seek(0, SeekOrigin.Begin);
         }
     }
     else {
         var fullyQualifiedLogPath = StreamLogsFolder;
         if (!Path.IsPathRooted(fullyQualifiedLogPath)) {
             fullyQualifiedLogPath = Path.Combine(ApplicationInformation.Directory, fullyQualifiedLogPath);
         }
         var streamFileName = Path.Combine(fullyQualifiedLogPath, Globals.CreateUniqueId("Stream_") + ".dat");
         using (var outStream = File.Open(streamFileName, FileMode.CreateNew, FileAccess.Write)) {
             transmissionData.Stream.CopyTo(outStream);
             transmissionData.Stream.Seek(0, SeekOrigin.Begin);
         }
         sb.AppendLine(string.Format("Data: See: {0}", streamFileName));
     }
     sb.AppendLine("*******************************");
     return sb.ToString();
 }
        /// <summary>
        /// Log the given data.
        /// </summary>
        /// <param name="transmissionData"></param>
        /// <remarks>Logs the stream inline if it does not exceed
        /// the configured inline stream limit.  If the limit is exceeded,
        /// it is logged in an external file and referenced inline.</remarks>
        public void Log(TransmissionData transmissionData) {
            ParameterCheck.ParameterRequired(transmissionData, "transmissionData");

            try {
                logger.Debug(BuildLogMessage(transmissionData));
            }
            catch (Exception err) {
                logger.Error(Messages.TransmissionLogger_Log_FailedToLog, err);
            }
        }
        /// <summary>
        /// Log the given data.
        /// </summary>
        /// <param name="transmissionData"></param>
        /// <remarks>Logs the stream inline if it does not exceed
        /// the configured inline stream limit.  If the limit is exceeded,
        /// it is logged in an external file and referenced inline.</remarks>
        public void Log(TransmissionData transmissionData)
        {
            ParameterCheck.ParameterRequired(transmissionData, "transmissionData");

            try {
                logger.Debug(BuildLogMessage(transmissionData));
            }
            catch (Exception err) {
                logger.Error(Messages.TransmissionLogger_Log_FailedToLog, err);
            }
        }