Files
Web_Faces_Prod/Face.Log4Net/ExceptionLogMessage.cs

125 lines
4.1 KiB
C#
Raw Permalink Normal View History

2025-11-25 17:41:24 +08:00
using log4net.Core;
using log4net.Layout.Pattern;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Face.Log4Net
{
/// <summary>
/// 一般操作
/// </summary>
public class ExceptionLogMessage
{
/// <summary>
/// 操作人
/// </summary>
public string Operationer { get; set; }
/// <summary>
/// 客户端IP
/// </summary>
public string IP { get; set; }
/// <summary>
/// 浏览器请求头
/// </summary>
public string Header { get; set; }
/// <summary>
/// 请求地址
/// </summary>
public string Url { get; set; }
/// <summary>
/// 功能点名称
/// </summary>
public string ActionName { get; set; }
public Exception exception { get; set; }
public override string ToString()
{
return string.Format("功能点:{0} \n操作者{1} \nIP{2} \n头部信息{3} \n来自页面{4} 错误信息:{5}", ActionName, Operationer, IP, Header, Url, exception.ToString());
}
}
public class ExceptionLayout : log4net.Layout.PatternLayout
{
public ExceptionLayout()
{
this.AddConverter("exceptionMessage", typeof(ExceptionPatternConverter));
this.AddConverter("ActionName", typeof(ActionNameExceptionPatternConverter));
this.AddConverter("Operationer", typeof(OperationerExceptionPatternConverter));
this.AddConverter("IP", typeof(IPExceptionPatternConverter));
this.AddConverter("Header", typeof(HeaderExceptionPatternConverter));
this.AddConverter("Url", typeof(UrlExceptionPatternConverter));
}
}
internal sealed class ActionNameExceptionPatternConverter : PatternLayoutConverter
{
override protected void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
ExceptionLogMessage logMessage = loggingEvent.MessageObject as ExceptionLogMessage;
if (logMessage != null)
writer.Write(logMessage.ActionName);
}
}
internal sealed class OperationerExceptionPatternConverter : PatternLayoutConverter
{
override protected void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
ExceptionLogMessage logMessage = loggingEvent.MessageObject as ExceptionLogMessage;
if (logMessage != null)
writer.Write(logMessage.Operationer);
}
}
internal sealed class IPExceptionPatternConverter : PatternLayoutConverter
{
override protected void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
ExceptionLogMessage logMessage = loggingEvent.MessageObject as ExceptionLogMessage;
if (logMessage != null)
writer.Write(logMessage.IP);
}
}
internal sealed class HeaderExceptionPatternConverter : PatternLayoutConverter
{
override protected void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
ExceptionLogMessage logMessage = loggingEvent.MessageObject as ExceptionLogMessage;
if (logMessage != null)
writer.Write(logMessage.Header);
}
}
internal sealed class UrlExceptionPatternConverter : PatternLayoutConverter
{
override protected void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
ExceptionLogMessage logMessage = loggingEvent.MessageObject as ExceptionLogMessage;
if (logMessage != null)
writer.Write(logMessage.Url);
}
}
internal sealed class ExceptionPatternConverter : PatternLayoutConverter
{
override protected void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
ExceptionLogMessage logMessage = loggingEvent.MessageObject as ExceptionLogMessage;
if (logMessage != null)
writer.Write(logMessage.exception.ToString());
}
}
}