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);
}
}
}