ILoggingChannel Interface (original) (raw)

Summary

Allows logging information to be written to a custom media.

Syntax

public interface ILoggingChannel 
public interface class ILogginChannel  

Example

using Leadtools; using Leadtools.Codecs; using Leadtools.Jpip; using Leadtools.Jpip.Client.WinForms; using Leadtools.Jpip.Client.InteractiveDecoder; using Leadtools.Jpip.Server; using Leadtools.Jpip.Logging; private JpipServer _server; private WindowsLogWriter _logWriter; private int _responseCount; private string _loggingFileName; private bool _loggingFileEnabled; private const string LOCAL_IP_ADDRESS = "127.0.0.1"; private const string SERVER_NAME = "LEAD JPIP Server - Test Server"; private const int PORT_107 = 107; private string CACHE_DIRECTORY = Path.Combine(LEAD_VARS.ImagesDir, "jpeg2000"); private string IMAGES_DIRECTORY = Path.Combine(LEAD_VARS.ImagesDir, "jpeg2000"); private string IMAGE_NAME = Path.Combine(LEAD_VARS.ImagesDir, "Earth8000_Precint_4_.j2k"); private string LOG_DIRECTORY = Path.Combine(LEAD_VARS.ImagesDir, "Server Logs"); private string LOG_FILE_NAME = Path.Combine(LEAD_VARS.ImagesDir, "log.txt"); public RunServerExamples() { Leadtools.Examples.Support.SetLicense(); _server = new JpipServer(); _logWriter = new WindowsLogWriter(); _responseCount = 0; _loggingFileEnabled = true; if (!File.Exists(LOG_DIRECTORY + LOG_FILE_NAME)) { Directory.CreateDirectory(LOG_DIRECTORY); File.WriteAllText(LOG_FILE_NAME, " "); } _loggingFileName = LOG_FILE_NAME; } void EventLogger_EventLog(object sender, Leadtools.Jpip.Logging.EventLogEntry e) { Console.WriteLine("Server Name: {0}; Server IP: {1}; Server Port: {2}; Client IP: {3}; Client Port: {4}; Channel ID: {5}; Event Type: {6}; Description: {7}", e.ServerName, e.ServerIPAddress, e.ServerPort, e.ClientIPAddress, e.ClientPort, e.ChannelID, e.Type.ToString(), e.Description); } void _server_ResponseSending(object sender, ResponseSendingEventArgs e) { string dataFolder; string dumpClientIP; int dumpClientPort; dataFolder = Path.Combine(LEAD_VARS.ImagesDir, "ServerResponses"); dumpClientIP = "127.0.0.1"; dumpClientPort = 1207; if (!Directory.Exists(dataFolder)) { Directory.CreateDirectory(dataFolder); } if ((e.ClientIpAddress == dumpClientIP) && (e.ClientPort == dumpClientPort)) { string subDirectoryPath; string responseDataFile; _responseCount++; subDirectoryPath = string.Concat(dataFolder, "\\", dumpClientIP); responseDataFile = string.Concat(subDirectoryPath, "\\response_", _responseCount); if (!Directory.Exists(subDirectoryPath)) { Directory.CreateDirectory(subDirectoryPath); } File.WriteAllBytes(responseDataFile, e.Data); } } void _server_RequestReceived(object sender, RequestReceivedEventArgs e) { string denyClientIpAddress = "127.0.0.1"; int denyClientPort = 120; if ((e.ClientIpAddress == denyClientIpAddress) && (e.ClientPort == denyClientPort)) { e.Deny = true; e.StatusCode = (int)HttpStatusCode.Forbidden; e.Description = "Server refused to process request."; } } public void ResetServerConfiguration() { if (!_server.IsRunning) { JpipConfiguration appConfigSettings; //for reading from configuration file settings appConfigSettings = new JpipConfiguration(); //Server Settings _server.Configuration.ServerName = SERVER_NAME; _server.Configuration.IPAddress = LOCAL_IP_ADDRESS; _server.Configuration.Port = PORT_107; _server.Configuration.ImagesFolder = IMAGES_DIRECTORY; _server.Configuration.CacheFolder = CACHE_DIRECTORY; _server.Configuration.MaxServerBandwidth = ConfigurationDefaults.MaxServerBandwidth; _server.Configuration.CacheSize = appConfigSettings.CacheSize; _server.Configuration.DivideSuperBoxes = true; _server.Configuration.ChunkSize = 512; _server.Configuration.MaxClientCount = 5; _server.Configuration.ConnectionIdleTimeout = TimeSpan.FromSeconds(ConfigurationDefaults.ConnectionIdleTimeout); _server.Configuration.MaxSessionLifetime = TimeSpan.FromSeconds(ConfigurationDefaults.MaxSessionLifetime); _server.Configuration.MaxConnectionBandwidth = ConfigurationDefaults.MaxConnectionBandwidth; //Communication Settings _server.Configuration.MaxTransportConnections = 15; _server.Configuration.HandshakeTimeout = TimeSpan.FromSeconds(ConfigurationDefaults.HandshakeTimeout); _server.Configuration.RequestTimeout = TimeSpan.FromSeconds(ConfigurationDefaults.RequestTimeout); _server.Configuration.ChunkSize = ConfigurationDefaults.ChunkSize; //Images Settings _server.Configuration.ImageParsingTimeout = TimeSpan.FromSeconds(ConfigurationDefaults.ImageParsingTimeout); _server.Configuration.PartitionBoxSize = 30; _server.Configuration.DivideSuperBoxes = appConfigSettings.DivideSuperBoxes; //Logging Settings _server.Configuration.LoggingFile = _loggingFileName; _server.Configuration.EnableLogging = _loggingFileEnabled; _server.Configuration.LogInformation = true; _server.Configuration.LogWarnings = true; _server.Configuration.LogDebug = true; _server.Configuration.LogErrors = true; AddAliasFolders(); } } private void AddAliasFolders() { string alias = "LeadImages"; string physicalPath = LEAD_VARS.ImagesDir; //Set server aliases folder if (_server.Configuration.IsAliasExists(alias)) { if (_server.Configuration.GetAliasPath(alias) != physicalPath) { _server.Configuration.RemoveAliasFolder(alias); } else { return; } } _server.Configuration.AddAliasFolder(alias, physicalPath); } public void SetViewer(JpipRasterImageViewer viewer) { viewer.CacheDirectoryName = CACHE_DIRECTORY; viewer.PortNumber = PORT_107; viewer.IPAddress = LOCAL_IP_ADDRESS; viewer.PacketSize = 16384; viewer.ChannelType = JpipChannelTypes.HttpChannel; } private class WindowsLogWriter : ILoggingChannel { public void WriteLog(Leadtools.Jpip.Logging.EventLogEntry logEntry) { string message; message = string.Format("Server Name: {0}; Server IP: {1}; Server Port: {2}; Client IP: {3}; Client Port: {4}; Channel ID: {5}; Event Type: {6}; Description: {7}", logEntry.ServerName, logEntry.ServerIPAddress, logEntry.ServerPort, logEntry.ClientIPAddress, logEntry.ClientPort, logEntry.ChannelID, logEntry.Type.ToString(), logEntry.Description); System.Diagnostics.EventLog.WriteEntry("JPIP LEAD Server", message); } } public void StartServer() { ResetServerConfiguration(); //Interactive handling _server.RequestReceived += new EventHandler<RequestReceivedEventArgs>(_server_RequestReceived); _server.ResponseSending += new EventHandler<ResponseSendingEventArgs>(_server_ResponseSending); //Handle event logs EventLogger.EventLog += new EventHandler<Leadtools.Jpip.Logging.EventLogEntry>(EventLogger_EventLog); //clear the server cache _server.ClearCacheContents(); //Add custom logging channel if (!EventLogger.ContainsLoggingChannel(_logWriter)) { EventLogger.AddLoggingChannel(_logWriter); } EventLogger.LogEvent(SERVER_NAME, LOCAL_IP_ADDRESS, PORT_107.ToString(), "", "", DateTime.Now, Leadtools.Jpip.Logging.EventLogEntryEventType.Information, "", "LEAD Example Started"); //start the server _server.Start(); Debug.Assert(_server.IsRunning, "Server did not start."); /* client side */ JpipRasterImageViewer jpipViewer = new JpipRasterImageViewer(); jpipViewer.FileOpened += new EventHandler(jpipViewer_FileOpened); SetViewer(jpipViewer); jpipViewer.Open(IMAGE_NAME); } void jpipViewer_FileOpened(object sender, EventArgs e) { JpipRasterImageViewer jpipViewer = (JpipRasterImageViewer)sender; jpipViewer.ZoomIn(); jpipViewer.Close(); /*Server side*/ if (_server.IsRunning) { _server.Stop(); } EventLogger.LogEvent(SERVER_NAME, LOCAL_IP_ADDRESS, PORT_107.ToString(), "", "", DateTime.Now, Leadtools.Jpip.Logging.EventLogEntryEventType.Information, "", "LEAD Example Ended"); } static class LEAD_VARS { public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; }