Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction | Help Version 19.0.2.15
|
Leadtools.MediaStreaming Namespace : ILtmsLogHandler Interface |
public interface ILtmsLogHandler
'Declaration
Public Interface ILtmsLogHandler
'Usage
Dim instance As ILtmsLogHandler
public interface class ILtmsLogHandler
Once the application has defined its own log handler it can pass a pointer to its ILtmsLogHandler interface using the ILogHandler property.
The server will call the application, and log events through the assigned log handler interface.
Imports Leadtools Imports Leadtools.MediaStreaming Private Enum W3CLOG [date] = &H1 time = &H2 c_ip = &H4 cs_username = &H8 s_sitename = &H10 s_computername = &H20 s_ip = &H40 s_port = &H80 cs_method = &H100 cs_uri_stem = &H200 cs_uri_query = &H400 sc_status = &H800 sc_win32_status = &H1000 sc_bytes = &H2000 cs_bytes = &H4000 time_taken = &H8000 cs_version = &H10000 cs_host = &H20000 cs_user_agent = &H40000 cs_cookie = &H80000 cs_referer = &H100000 sc_substatus = &H200000 End Enum Public Class CW3CLogHandler : Implements ILtmsLogHandler Private m_enable As Boolean Private m_fields As Integer Private m_localtime As Boolean Private m_dtfile As DateTime Private m_software As String Private m_folder As String Private m_prefix As String Private m_sw As StreamWriter Public Sub New(ByVal prefix As String, ByVal software As String, ByVal enable As Boolean, ByVal folder As String, ByVal fields As Integer, ByVal localtime As Boolean) m_prefix = prefix m_software = software m_enable = enable m_folder = folder m_fields = fields m_localtime = localtime End Sub Protected Overrides Sub Finalize() End Sub Private Sub WriteString(ByVal str As String) m_sw.Write(str) End Sub Private Function GetTime(ByVal dTime As Double) As DateTime Dim dt As DateTime = DateTime.FromOADate(dTime) If m_localtime Then Return dt.ToLocalTime() End If Return dt End Function Private Function GetLogPath(ByVal timestamp As Double) As String Dim dt As DateTime = GetTime(timestamp) Dim strFullPath As String Try Dim resolver As PathResolver = New PathResolver() strFullPath = resolver.Resolve(m_folder) Catch Return "" End Try strFullPath &= "\" strFullPath &= m_prefix If (Not m_localtime) Then strFullPath &= dt.ToString("y-MM-dd-HH-mm-ss").Replace("-", "") & "UTC.log" Else strFullPath &= dt.ToString("y-MM-dd-HH-mm-ss").Replace("-", "") & ".log" End If Return strFullPath End Function Public Sub LoadConfig(ByVal server As Server) Dim enable As Boolean = m_enable Dim localtime As Boolean = m_localtime Dim folder As String = m_folder Dim fields As Integer = m_fields Dim dirty As Boolean = False Dim AppProps As ApplicationProperties = server.GetApplicationProperties() Try enable = AppProps.GetBoolean("LogEnable") Catch AppProps.AddBoolean("LogEnable", enable) dirty = True End Try Try localtime = AppProps.GetBoolean("LogLocalTime") Catch AppProps.AddBoolean("LogLocalTime", localtime) dirty = True End Try Try folder = AppProps.GetString("LogFolder") Catch AppProps.AddString("LogFolder", folder) dirty = True End Try Try fields = AppProps.GetInteger("LogFields") Catch AppProps.AddInteger("LogFields", fields) dirty = True End Try If dirty Then server.SetApplicationProperties(AppProps) End If ' if anything has changed then we need to close the current file If (Not enable) AndAlso (String.Compare(m_folder, folder, True) <> 0) OrElse fields <> m_fields OrElse m_localtime <> localtime Then If Not m_sw Is Nothing Then m_sw.Close() End If End If m_folder = folder m_localtime = localtime m_enable = enable m_fields = fields End Sub Private Function CreateLog(ByVal timestamp As Double) As Boolean If Not m_sw Is Nothing Then m_sw.Close() End If If (Not m_enable) Then Return False End If Try m_sw = File.CreateText(GetLogPath(timestamp)) Catch Return False End Try m_dtfile = GetTime(timestamp) Dim s As String s = "#Software: " & m_software & Constants.vbCrLf WriteString(s) WriteString("#Version: 1.0" & Constants.vbCrLf) Dim dt As DateTime = GetTime(timestamp) s = "#Date: " & dt.ToString("yyyy-MM-dd HH:mm:ss") & Constants.vbCrLf WriteString(s) s = "#Fields:" If (m_fields And CInt(W3CLOG.date)) = CInt(W3CLOG.date) Then s &= " date" End If If (m_fields And CInt(W3CLOG.time)) = CInt(W3CLOG.time) Then s &= " time" End If If (m_fields And CInt(W3CLOG.s_sitename)) = CInt(W3CLOG.s_sitename) Then s &= " s-sitename" End If If (m_fields And CInt(W3CLOG.s_computername)) = CInt(W3CLOG.s_computername) Then s &= " s-computername" End If If (m_fields And CInt(W3CLOG.s_ip)) = CInt(W3CLOG.s_ip) Then s &= " s-ip" End If If (m_fields And CInt(W3CLOG.cs_method)) = CInt(W3CLOG.cs_method) Then s &= " cs-method" End If If (m_fields And CInt(W3CLOG.cs_uri_stem)) = CInt(W3CLOG.cs_uri_stem) Then s &= " cs-uri-stem" End If If (m_fields And CInt(W3CLOG.cs_uri_query)) = CInt(W3CLOG.cs_uri_query) Then s &= " cs-uri-query" End If If (m_fields And CInt(W3CLOG.s_port)) = CInt(W3CLOG.s_port) Then s &= " s-port" End If If (m_fields And CInt(W3CLOG.cs_username)) = CInt(W3CLOG.cs_username) Then s &= " cs-username" End If If (m_fields And CInt(W3CLOG.c_ip)) = CInt(W3CLOG.c_ip) Then s &= " c-ip" End If If (m_fields And CInt(W3CLOG.cs_version)) = CInt(W3CLOG.cs_version) Then s &= " cs-version" End If If (m_fields And CInt(W3CLOG.cs_user_agent)) = CInt(W3CLOG.cs_user_agent) Then s &= " cs(User-Agent)" End If If (m_fields And CInt(W3CLOG.cs_cookie)) = CInt(W3CLOG.cs_cookie) Then s &= " cs(Cookie)" End If If (m_fields And CInt(W3CLOG.cs_referer)) = CInt(W3CLOG.cs_referer) Then s &= " cs(Referer)" End If If (m_fields And CInt(W3CLOG.cs_host)) = CInt(W3CLOG.cs_host) Then s &= " cs-host" End If If (m_fields And CInt(W3CLOG.sc_status)) = CInt(W3CLOG.sc_status) Then s &= " sc-status" End If If (m_fields And CInt(W3CLOG.sc_substatus)) = CInt(W3CLOG.sc_substatus) Then s &= " sc-substatus" End If If (m_fields And CInt(W3CLOG.sc_win32_status)) = CInt(W3CLOG.sc_win32_status) Then s &= " sc-win32-status" End If If (m_fields And CInt(W3CLOG.sc_bytes)) = CInt(W3CLOG.sc_bytes) Then s &= " sc-bytes" End If If (m_fields And CInt(W3CLOG.cs_bytes)) = CInt(W3CLOG.cs_bytes) Then s &= " cs-bytes" End If If (m_fields And CInt(W3CLOG.time_taken)) = CInt(W3CLOG.time_taken) Then s &= " time-taken" End If s &= Constants.vbCrLf WriteString(s) m_sw.Flush() Return True End Function Private Function escape(ByVal s As String) As String Dim t As String = "" For Each c As Char In s If (Not Char.IsControl(c)) AndAlso (Not Char.IsWhiteSpace(c)) Then t &= c Else t &= "+" End If Next c Return t End Function Public Sub InitializeLog(ByVal timestamp As Double) Implements ILtmsLogHandler.InitializeLog CreateLog(timestamp) End Sub Public Sub TerminateLog() Implements ILtmsLogHandler.TerminateLog If Not m_sw Is Nothing Then m_sw.Close() End If End Sub Public Sub LogInformation(ByVal info As ILtmsLogInformation) Implements ILtmsLogHandler.LogInformation Dim s As String = "" If (Not m_enable) Then Return End If ' check if we need to roll to a new file Dim dt As DateTime = GetTime(info.TimeStamp) If m_sw Is Nothing OrElse dt.Day <> m_dtfile.Day OrElse dt.Month <> m_dtfile.Month OrElse dt.Year <> m_dtfile.Year Then If (Not CreateLog(info.TimeStamp)) Then Return End If End If If (m_fields And CInt(W3CLOG.date)) = CInt(W3CLOG.date) Then Dim dtDate As DateTime = GetTime(info.TimeStamp) If s.Length > 0 Then s &= " " End If s &= dtDate.ToString("yyyy-MM-dd") End If If (m_fields And CInt(W3CLOG.time)) = CInt(W3CLOG.time) Then Dim dtTime As DateTime = GetTime(info.TimeStamp) If s.Length > 0 Then s &= " " End If s &= dtTime.ToString("HH:mm:ss") End If If (m_fields And CInt(W3CLOG.s_sitename)) = CInt(W3CLOG.s_sitename) Then Dim str As String = info.SiteName If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.s_computername)) = CInt(W3CLOG.s_computername) Then Dim str As String = info.ComputerName If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.s_ip)) = CInt(W3CLOG.s_ip) Then Dim str As String = info.ServerIP If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.cs_method)) = CInt(W3CLOG.cs_method) Then Dim str As String = info.Method If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.cs_uri_stem)) = CInt(W3CLOG.cs_uri_stem) Then Dim str As String = info.URIStem If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.cs_uri_query)) = CInt(W3CLOG.cs_uri_query) Then Dim str As String = info.URIQuery If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.s_port)) = CInt(W3CLOG.s_port) Then Dim n As Integer = info.ServerPort If s.Length > 0 Then s &= " " End If s &= n.ToString() End If If (m_fields And CInt(W3CLOG.cs_username)) = CInt(W3CLOG.cs_username) Then Dim str As String = info.UserName If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.c_ip)) = CInt(W3CLOG.c_ip) Then Dim str As String = info.ClientIP If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.cs_version)) = CInt(W3CLOG.cs_version) Then Dim str As String = info.ProtocolVersion If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.cs_user_agent)) = CInt(W3CLOG.cs_user_agent) Then Dim str As String = info.UserAgent If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.cs_cookie)) = CInt(W3CLOG.cs_cookie) Then Dim str As String = info.Cookie If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.cs_referer)) = CInt(W3CLOG.cs_referer) Then Dim str As String = info.Referrer If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.cs_host)) = CInt(W3CLOG.cs_host) Then Dim str As String = info.Host If s.Length > 0 Then s &= " " End If If str.Length = 0 Then s &= "-" Else s &= escape(str) End If End If If (m_fields And CInt(W3CLOG.sc_status)) = CInt(W3CLOG.sc_status) Then Dim n As Integer = info.Status If s.Length > 0 Then s &= " " End If s &= n.ToString() End If If (m_fields And CInt(W3CLOG.sc_substatus)) = CInt(W3CLOG.sc_substatus) Then Dim n As Integer = info.ProtocolSubStatus If s.Length > 0 Then s &= " " End If s &= n.ToString() End If If (m_fields And CInt(W3CLOG.sc_win32_status)) = CInt(W3CLOG.sc_win32_status) Then Dim n As Integer = info.Win32Status If s.Length > 0 Then s &= " " End If s &= n.ToString() End If If (m_fields And CInt(W3CLOG.sc_bytes)) = CInt(W3CLOG.sc_bytes) Then Dim n As Integer = info.BytesSent If s.Length > 0 Then s &= " " End If If n < 0 Then s &= "-" Else s &= n.ToString() End If End If If (m_fields And CInt(W3CLOG.cs_bytes)) = CInt(W3CLOG.cs_bytes) Then Dim n As Integer = info.BytesReceived If s.Length > 0 Then s &= " " End If If n < 0 Then s &= "-" Else s &= n.ToString() End If End If If (m_fields And CInt(W3CLOG.time_taken)) = CInt(W3CLOG.time_taken) Then Dim n As Integer = info.TimeTaken If s.Length > 0 Then s &= " " End If If n < 0 Then s &= "-" Else s &= n.ToString() End If End If s &= Constants.vbCrLf WriteString(s) m_sw.Flush() End Sub End Class Public _server As Server = Nothing Public _result As Boolean = False Public Sub W3CLogHandlerExample() Try Dim enumState As State Dim _loghandler As CW3CLogHandler ' create an instance of the server object _server = New Leadtools.MediaStreaming.Server() ' create the log handler _loghandler = New CW3CLogHandler("ltmsServer_", "LEADTOOLS Media Streaming Server", True, "ltmsLogFolder", 0, False) ' set the log handler _server.ILogHandler = _loghandler ' for demonstration, compare the interface we just set Dim ihandler As ILtmsLogHandler = Nothing ihandler = _server.ILogHandler If Not ihandler Is CType(_loghandler, ILtmsLogHandler) Then _result = False Return End If ' load the config file located in the config subfolder under the executable folder ' or comment this section out to run with the server�s default settings _server.ImportConfigFile("ltmsConfigFolder\LeadtoolsMediaStreamingServer.xml") ' start the server _server.Start() ' confirm the running state for demonstration purposes enumState = _server.State If enumState = State.Started Then ' display a message that the server is running and wait for OK MessageBox.Show("The server has started. Press OK to stop.", "LEADTOOLS Media Streaming Examples", MessageBoxButtons.OK, MessageBoxIcon.Information) End If ' stop the server _server.Stop() ' remove the log handler _server.ILogHandler = Nothing _result = True Catch e1 As Exception _result = False End Try End Sub
using Leadtools; using Leadtools.MediaStreaming; enum W3CLOG { date = 0x00000001, time = 0x00000002, c_ip = 0x00000004, cs_username = 0x00000008, s_sitename = 0x00000010, s_computername = 0x00000020, s_ip = 0x00000040, s_port = 0x00000080, cs_method = 0x00000100, cs_uri_stem = 0x00000200, cs_uri_query = 0x00000400, sc_status = 0x00000800, sc_win32_status = 0x00001000, sc_bytes = 0x00002000, cs_bytes = 0x00004000, time_taken = 0x00008000, cs_version = 0x00010000, cs_host = 0x00020000, cs_user_agent = 0x00040000, cs_cookie = 0x00080000, cs_referer = 0x00100000, sc_substatus = 0x00200000, }; public class CW3CLogHandler : ILtmsLogHandler { bool m_enable; int m_fields; bool m_localtime; DateTime m_dtfile; string m_software; string m_folder; string m_prefix; StreamWriter m_sw; public CW3CLogHandler(string prefix, string software, bool enable, string folder, int fields, bool localtime) { m_prefix = prefix; m_software = software; m_enable = enable; m_folder = folder; m_fields = fields; m_localtime = localtime; } ~CW3CLogHandler() { } void WriteString(string str) { m_sw.Write(str); } DateTime GetTime(double dTime) { DateTime dt = DateTime.FromOADate(dTime); if (m_localtime) return dt.ToLocalTime(); return dt; } string GetLogPath(double timestamp) { DateTime dt = GetTime(timestamp); string strFullPath; try { PathResolver resolver = new PathResolver(); strFullPath = resolver.Resolve(m_folder); } catch { return ""; } strFullPath += "\\"; strFullPath += m_prefix; if (!m_localtime) { strFullPath += dt.ToString("y-MM-dd-HH-mm-ss").Replace("-", "") + "UTC.log"; } else { strFullPath += dt.ToString("y-MM-dd-HH-mm-ss").Replace("-", "") + ".log"; } return strFullPath; } public void LoadConfig(Server server) { bool enable = m_enable; bool localtime = m_localtime; string folder = m_folder; int fields = m_fields; bool dirty = false; ApplicationProperties AppProps = server.GetApplicationProperties(); try { enable = AppProps.GetBoolean("LogEnable"); } catch { AppProps.AddBoolean("LogEnable", enable); dirty = true; } try { localtime = AppProps.GetBoolean("LogLocalTime"); } catch { AppProps.AddBoolean("LogLocalTime", localtime); dirty = true; } try { folder = AppProps.GetString("LogFolder"); } catch { AppProps.AddString("LogFolder", folder); dirty = true; } try { fields = AppProps.GetInteger("LogFields"); } catch { AppProps.AddInteger("LogFields", fields); dirty = true; } if (dirty) server.SetApplicationProperties(AppProps); // if anything has changed then we need to close the current file if (!enable && (string.Compare(m_folder, folder, true) != 0) || fields != m_fields || m_localtime != localtime) { if (m_sw != null) m_sw.Close(); } m_folder = folder; m_localtime = localtime; m_enable = enable; m_fields = fields; } bool CreateLog(double timestamp) { if (m_sw != null) m_sw.Close(); if (!m_enable) return false; try { m_sw = File.CreateText(GetLogPath(timestamp)); } catch { return false; } m_dtfile = GetTime(timestamp); string s; s = "#Software: " + m_software + "\r\n"; WriteString(s); WriteString("#Version: 1.0\r\n"); DateTime dt = GetTime(timestamp); s = "#Date: " + dt.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n"; WriteString(s); s = "#Fields:"; if ((m_fields & (int)W3CLOG.date) == (int)W3CLOG.date) { s += " date"; } if ((m_fields & (int)W3CLOG.time) == (int)W3CLOG.time) { s += " time"; } if ((m_fields & (int)W3CLOG.s_sitename) == (int)W3CLOG.s_sitename) { s += " s-sitename"; } if ((m_fields & (int)W3CLOG.s_computername) == (int)W3CLOG.s_computername) { s += " s-computername"; } if ((m_fields & (int)W3CLOG.s_ip) == (int)W3CLOG.s_ip) { s += " s-ip"; } if ((m_fields & (int)W3CLOG.cs_method) == (int)W3CLOG.cs_method) { s += " cs-method"; } if ((m_fields & (int)W3CLOG.cs_uri_stem) == (int)W3CLOG.cs_uri_stem) { s += " cs-uri-stem"; } if ((m_fields & (int)W3CLOG.cs_uri_query) == (int)W3CLOG.cs_uri_query) { s += " cs-uri-query"; } if ((m_fields & (int)W3CLOG.s_port) == (int)W3CLOG.s_port) { s += " s-port"; } if ((m_fields & (int)W3CLOG.cs_username) == (int)W3CLOG.cs_username) { s += " cs-username"; } if ((m_fields & (int)W3CLOG.c_ip) == (int)W3CLOG.c_ip) { s += " c-ip"; } if ((m_fields & (int)W3CLOG.cs_version) == (int)W3CLOG.cs_version) { s += " cs-version"; } if ((m_fields & (int)W3CLOG.cs_user_agent) == (int)W3CLOG.cs_user_agent) { s += " cs(User-Agent)"; } if ((m_fields & (int)W3CLOG.cs_cookie) == (int)W3CLOG.cs_cookie) { s += " cs(Cookie)"; } if ((m_fields & (int)W3CLOG.cs_referer) == (int)W3CLOG.cs_referer) { s += " cs(Referer)"; } if ((m_fields & (int)W3CLOG.cs_host) == (int)W3CLOG.cs_host) { s += " cs-host"; } if ((m_fields & (int)W3CLOG.sc_status) == (int)W3CLOG.sc_status) { s += " sc-status"; } if ((m_fields & (int)W3CLOG.sc_substatus) == (int)W3CLOG.sc_substatus) { s += " sc-substatus"; } if ((m_fields & (int)W3CLOG.sc_win32_status) == (int)W3CLOG.sc_win32_status) { s += " sc-win32-status"; } if ((m_fields & (int)W3CLOG.sc_bytes) == (int)W3CLOG.sc_bytes) { s += " sc-bytes"; } if ((m_fields & (int)W3CLOG.cs_bytes) == (int)W3CLOG.cs_bytes) { s += " cs-bytes"; } if ((m_fields & (int)W3CLOG.time_taken) == (int)W3CLOG.time_taken) { s += " time-taken"; } s += "\r\n"; WriteString(s); m_sw.Flush(); return true; } string escape(string s) { string t = ""; foreach (char c in s) { if (!char.IsControl(c) && !char.IsWhiteSpace(c)) t += c; else t += "+"; } return t; } public void InitializeLog(double timestamp) { CreateLog(timestamp); } public void TerminateLog() { if (m_sw != null) m_sw.Close(); } public void LogInformation(ILtmsLogInformation info) { string s = ""; if (!m_enable) return; // check if we need to roll to a new file { DateTime dt = GetTime(info.TimeStamp); if (m_sw == null || dt.Day != m_dtfile.Day || dt.Month != m_dtfile.Month || dt.Year != m_dtfile.Year) { if (!CreateLog(info.TimeStamp)) return; } } if ((m_fields & (int)W3CLOG.date) == (int)W3CLOG.date) { DateTime dt = GetTime(info.TimeStamp); if (s.Length > 0) s += " "; s += dt.ToString("yyyy-MM-dd"); } if ((m_fields & (int)W3CLOG.time) == (int)W3CLOG.time) { DateTime dt = GetTime(info.TimeStamp); if (s.Length > 0) s += " "; s += dt.ToString("HH:mm:ss"); } if ((m_fields & (int)W3CLOG.s_sitename) == (int)W3CLOG.s_sitename) { string str = info.SiteName; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.s_computername) == (int)W3CLOG.s_computername) { string str = info.ComputerName; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.s_ip) == (int)W3CLOG.s_ip) { string str = info.ServerIP; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.cs_method) == (int)W3CLOG.cs_method) { string str = info.Method; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.cs_uri_stem) == (int)W3CLOG.cs_uri_stem) { string str = info.URIStem; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.cs_uri_query) == (int)W3CLOG.cs_uri_query) { string str = info.URIQuery; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.s_port) == (int)W3CLOG.s_port) { int n = info.ServerPort; if (s.Length > 0) s += " "; s += n.ToString(); } if ((m_fields & (int)W3CLOG.cs_username) == (int)W3CLOG.cs_username) { string str = info.UserName; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.c_ip) == (int)W3CLOG.c_ip) { string str = info.ClientIP; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.cs_version) == (int)W3CLOG.cs_version) { string str = info.ProtocolVersion; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.cs_user_agent) == (int)W3CLOG.cs_user_agent) { string str = info.UserAgent; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.cs_cookie) == (int)W3CLOG.cs_cookie) { string str = info.Cookie; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.cs_referer) == (int)W3CLOG.cs_referer) { string str = info.Referrer; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.cs_host) == (int)W3CLOG.cs_host) { string str = info.Host; if (s.Length > 0) s += " "; if (str.Length == 0) s += "-"; else s += escape(str); } if ((m_fields & (int)W3CLOG.sc_status) == (int)W3CLOG.sc_status) { int n = info.Status; if (s.Length > 0) s += " "; s += n.ToString(); } if ((m_fields & (int)W3CLOG.sc_substatus) == (int)W3CLOG.sc_substatus) { int n = info.ProtocolSubStatus; if (s.Length > 0) s += " "; s += n.ToString(); } if ((m_fields & (int)W3CLOG.sc_win32_status) == (int)W3CLOG.sc_win32_status) { int n = info.Win32Status; if (s.Length > 0) s += " "; s += n.ToString(); } if ((m_fields & (int)W3CLOG.sc_bytes) == (int)W3CLOG.sc_bytes) { int n = info.BytesSent; if (s.Length > 0) s += " "; if (n < 0) s += "-"; else s += n.ToString(); } if ((m_fields & (int)W3CLOG.cs_bytes) == (int)W3CLOG.cs_bytes) { int n = info.BytesReceived; if (s.Length > 0) s += " "; if (n < 0) s += "-"; else s += n.ToString(); } if ((m_fields & (int)W3CLOG.time_taken) == (int)W3CLOG.time_taken) { int n = info.TimeTaken; if (s.Length > 0) s += " "; if (n < 0) s += "-"; else s += n.ToString(); } s += "\r\n"; WriteString(s); m_sw.Flush(); } } public Server _server = null; public bool _result = false; public void W3CLogHandlerExample() { try { State enumState; CW3CLogHandler _loghandler; // create an instance of the server object _server = new Leadtools.MediaStreaming.Server(); // create the log handler _loghandler = new CW3CLogHandler("ltmsServer_", "LEADTOOLS Media Streaming Server", true, "ltmsLogFolder", 0, false); // set the log handler _server.ILogHandler = _loghandler; { // for demonstration, compare the interface we just set ILtmsLogHandler ihandler = null; ihandler = _server.ILogHandler; if (ihandler != (ILtmsLogHandler)_loghandler) { _result = false; return; } } // load the config file located in the config subfolder under the executable folder // or comment this section out to run with the server�s default settings _server.ImportConfigFile("ltmsConfigFolder\\LeadtoolsMediaStreamingServer.xml"); // start the server _server.Start(); // confirm the running state for demonstration purposes enumState = _server.State; if (enumState == State.Started) { // display a message that the server is running and wait for OK MessageBox.Show("The server has started. Press OK to stop.", "LEADTOOLS Media Streaming Examples", MessageBoxButtons.OK, MessageBoxIcon.Information); } // stop the server _server.Stop(); // remove the log handler _server.ILogHandler = null; _result = true; } catch (Exception) { _result = false; } }