[DispIdAttribute(1)]
public double TimeStamp { get; }
ReadOnly Property TimeStamp As Double
property double TimeStamp {
double get();
}
A double value that represents the timestamp of the log event information (UTC).
If the method fails, an error is raised. For more information, refer to the Error Codes.
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
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document