←Select platform

TerminateLog Method

Summary

Terminate application logging.

Syntax

C#
VB
C++
void TerminateLog() 
Sub TerminateLog()  
void TerminateLog();  

Remarks

This function is called when the server stops, and can be used to perform application logging cleanup.

If the method fails, an error is raised. For more information, refer to the Error Codes.

Example

C#
VB
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; 
   } 
} 
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 

Requirements

Target Platforms

Help Version 19.0.2017.10.27
Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.MediaStreaming Assembly