using System; using System.Collections.Generic; using System.Linq; using System.Text; using SuperSocket.Common; using SuperSocket.SocketBase.Logging; namespace SuperSocket.SocketBase { /// /// Logger extension class /// public static class LoggerExtension { private readonly static string m_SessionInfoTemplate = "Session: {0}/{1}"; /// /// Logs the error /// /// The logger. /// The session. /// The title. /// The e. public static void Error(this ILog logger, ISessionBase session, string title, Exception e) { logger.Error(string.Format(m_SessionInfoTemplate, session.SessionID, session.RemoteEndPoint) + Environment.NewLine + title, e); } /// /// Logs the error /// /// The logger. /// The session. /// The message. public static void Error(this ILog logger, ISessionBase session, string message) { logger.Error(string.Format(m_SessionInfoTemplate, session.SessionID, session.RemoteEndPoint) + Environment.NewLine + message); } /// /// Logs the information /// /// The logger. /// The session. /// The message. public static void Info(this ILog logger, ISessionBase session, string message) { string info = string.Format(m_SessionInfoTemplate, session.SessionID, session.RemoteEndPoint) + Environment.NewLine + message; logger.Info(info); } /// /// Logs the debug message /// /// The logger. /// The session. /// The message. public static void Debug(this ILog logger, ISessionBase session, string message) { if (!logger.IsDebugEnabled) return; logger.Debug(string.Format(m_SessionInfoTemplate, session.SessionID, session.RemoteEndPoint) + Environment.NewLine + message); } private const string m_PerfLogName = "Perf"; private static ILog m_PerfLog; /// /// Logs the performance message /// /// The app server. /// The message. public static void LogPerf(this IAppServer appServer, string message) { if (m_PerfLog == null) { lock (m_PerfLogName) { if (m_PerfLog == null) { m_PerfLog = appServer.LogFactory.GetLog(m_PerfLogName); } } } if (m_PerfLog != null && m_PerfLog.IsInfoEnabled) m_PerfLog.Info(message); } } }