困惑不解,请求解决,附上代码

okzjq 2009-01-15 12:03:44
下面是在系统出错时通过log4net写日志的类,但在写WriteEventLog()写日志的方法中,CurrentSessionInfo的内容永远是
“Anonymous User And System Session is Null”,请问为什么会这样呢?

public class EventLog
{
#region 私有构造函数,单件模式,防止被实例化
/// <summary>
/// 私有构造函数,单件模式,防止被实例化
/// </summary>
private EventLog()
{
}
#endregion

#region 是否启用日志事件跟踪
/// <summary>
/// 是否启用日志事件跟踪
/// </summary>
protected static bool EnableEvent
{
get
{
return ConfigInfo.WEB_SYSTEM_ENABLEEVENTLOG;
}
}
#endregion

#region 事件信息体结构
/// <summary>
/// 事件信息体结构
/// </summary>
private struct EventBody
{

#region 当前会话信息属性
/// <summary>
/// 当前会话信息属性
/// </summary>
public string CurrentSessionInfo
{
get
{
StringBuilder SessionInfo = new StringBuilder();

if (HttpContext.Current != null && HttpContext.Current.Session != null)
{
for (int i = 0; i < HttpContext.Current.Session.Count; i++)
{
SessionInfo.Append("\r\n\tSession[").Append(HttpContext.Current.Session.Keys[i])
.Append("] = ").Append(TypeParseHelper.StringParse(NetHelper.CurrentContext.Session[i]));
}
}

if (SessionInfo.Length == 0)
{
return "Anonymous User And System Session is Null!";
}
else
{
return SessionInfo.ToString();
}
}
}
#endregion

#region 远程主机IP地址
/// <summary>
/// 远程主机IP地址
/// </summary>
public string UserHostAddress
{
get
{
return NetHelper.GetIP();
}
}
#endregion

#region 出错页面地址
/// <summary>
/// 出错页面地址
/// </summary>
public string ErrorPage
{
get
{
return RequestHelper.GetUrl();
}
}
#endregion

#region 页面来源地址
/// <summary>
/// 页面来源地址
/// </summary>
public string ReferrerPage
{
get
{
return RequestHelper.GetUrlReferrer();
}
}
#endregion

#region 相关变量

/// <summary>
/// 事件等级变量
/// </summary>
public EventLevelEnum EventLevel;

/// <summary>
/// 事件源变量
/// </summary>
public EventSourceEnum EventSource;

/// <summary>
/// 事件标题变量
/// </summary>
public string EventTitle;

#endregion
}
#endregion

#region 初始化log4net
/// <summary>
/// 初始化log4net
/// </summary>
public static void Initializelog4net()
{
//log4net.Config.DOMConfigurator.Configure();
log4net.Config.XmlConfigurator.Configure();
}
#endregion

#region 写事件方法
/// <summary>
/// 写事件方法
/// </summary>
/// <param name="objEventBody">事件信息体</param>
/// <param name="oExp">事件</param>
public static void WriteEventLog(EventBody objEventBody, Exception oExp)
{
if (!EnableEvent)
return;

//事件信息初始化
StringBuilder strEventMessage = new StringBuilder();
strEventMessage.Append("<b>内容标题:</b>").Append(objEventBody.EventTitle).Append("\r\n<br>");
strEventMessage.Append("<b>远程主机:</b>").Append(objEventBody.UserHostAddress).Append("\r\n<br>");
strEventMessage.Append("<b>会话信息:</b>").Append(objEventBody.CurrentSessionInfo).Append("\r\n<br>");

log4net.ILog log = log4net.LogManager.GetLogger("Kinyu");

switch ((EventLogEntryType)objEventBody.EventLevel)
{
case EventLogEntryType.Error:
log.Error(strEventMessage, oExp);
break;
case EventLogEntryType.FailureAudit:
log.Error(strEventMessage, oExp);
break;
case EventLogEntryType.Information:
log.Info(strEventMessage, oExp);
break;
case EventLogEntryType.SuccessAudit:
log.Info(strEventMessage, oExp);
break;
default:
log.Warn(strEventMessage, oExp);
break;
}
}
#endregion
}
...全文
67 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
万小萌 2009-01-15
  • 打赏
  • 举报
回复
mark!

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧