protected virtual void Run()
{
try
{
// Open connection.
ReopenConnection();
string logMessagePrefix = String.Empty;
if (m_UseHostName)
{
// If LogHostName is set to "true", but HostName is not defined -
// try to get host name from Environment.
if (m_HostName == String.Empty)
{
try
{
WriteDebugMessages("HostName parameter is not defined - trying to get it from System.Environment.MachineName");
m_HostName = "HostName=" + System.Environment.MachineName + " ";
}
catch (InvalidOperationException)
{
// Cannot get host name automatically, so assume that HostName is not used
// and log message is sent without it.
m_UseHostName = false;
WriteDebugMessages("Failed to get HostName parameter using System.Environment.MachineName. Log messages will not be prefixed by HostName");
}
}
else
{
if (!CheckIfHostNameValid(m_HostName))
{
// If user-defined host name is incorrect - we cannot use it
// and log message is sent without it.
m_UseHostName = false;
WriteDebugMessages("HostName parameter contains prohibited characters. Log messages will not be prefixed by HostName");
}
else
{
m_HostName = "HostName=" + m_HostName + " ";
}
}
}
if (m_LogID != String.Empty)
{
logMessagePrefix = m_LogID + " ";
}
if (m_UseHostName)
{
logMessagePrefix += m_HostName;
}
// Flag that is set if logMessagePrefix is empty.
bool isPrefixEmpty = (logMessagePrefix == String.Empty);
// Send data in queue.
while (true)
{
// added debug here
WriteDebugMessages("Await queue data");
// Take data from queue.
var line = Queue.Take();
//added debug message here
WriteDebugMessages("Queue data obtained");
// Replace newline chars with line separator to format multi-line events nicely.
foreach (String newline in posix_newline)
{
line = line.Replace(newline, line_separator);
}
// If m_UseDataHub == true (logs are sent to DataHub instance) then m_Token is not
// appended to the message.
string finalLine = ((!m_UseHttpPut && !m_UseDataHub) ? this.m_Token + line : line) + '\n';
// Add prefixes: LogID and HostName if they are defined.
if (!isPrefixEmpty)
{
finalLine = logMessagePrefix + finalLine;
}
byte[] data = UTF8.GetBytes(finalLine);
// Send data, reconnect if needed.
while (true)
{
try
{
//removed iff loop and added debug message
// Le.Client writes data
WriteDebugMessages("Write data");
this.LeClient.Write(data, 0, data.Length);
WriteDebugMessages("Write complete, flush");
// if (m_ImmediateFlush) was removed, always flushed now.
this.LeClient.Flush();
WriteDebugMessages("Flush complete");
}
catch (IOException e)
{
WriteDebugMessages("IOException during write, reopen: " + e.Message);
// Reopen the lost connection.
ReopenConnection();
continue;
}
break;
}
}
}
catch (ThreadInterruptedException ex)
{
WriteDebugMessages("Logentries asynchronous socket client was interrupted.", ex);
}
}