Skip to content

Commit 83d4301

Browse files
committed
[增加] 在非控制台打印模式下的日志输出为紧凑JSON
1 parent c253550 commit 83d4301

5 files changed

Lines changed: 138 additions & 94 deletions

File tree

GameFrameX.NetWork/InnerNetworkMessage.cs

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using System.Collections.Concurrent;
22
using System.Text;
33
using System.Text.Json.Serialization;
4+
using GameFrameX.Foundation.Json;
45
using GameFrameX.Foundation.Logger;
56
using GameFrameX.NetWork.Abstractions;
7+
using GameFrameX.NetWork.Messages;
68
using GameFrameX.ProtoBuf.Net;
79
using GameFrameX.Utility.Extensions;
810

@@ -56,37 +58,7 @@ public void SetMessageData(byte[] messageData)
5658
/// <returns></returns>
5759
public string ToFormatMessageString()
5860
{
59-
try
60-
{
61-
var stringBuilder = new StringBuilder();
62-
stringBuilder.Clear();
63-
stringBuilder.AppendLine();
64-
// 向下的箭头
65-
stringBuilder.AppendLine($"{'\u2193'.RepeatChar(140)}");
66-
// 消息的头部信息
67-
// 消息类型
68-
stringBuilder.Append($"---MessageType:[{GetType().Name.CenterAlignedText(30)}]");
69-
// 消息ID
70-
stringBuilder.Append($"--MsgId:[{Header.MessageId.ToString().CenterAlignedText(11)}]({MessageIdUtility.GetMainId(Header.MessageId).ToString().CenterAlignedText(3)},{MessageIdUtility.GetSubId(Header.MessageId).ToString().CenterAlignedText(3)})");
71-
// 操作类型
72-
stringBuilder.Append($"--OpType:[{Header.OperationType.ToString().CenterAlignedText(20)}]");
73-
// 唯一ID
74-
stringBuilder.Append($"--UniqueId:[{Header.UniqueId.ToString().CenterAlignedText(13)}]---");
75-
// 消息的内容 分割
76-
stringBuilder.AppendLine();
77-
// 消息内容
78-
stringBuilder.AppendLine($"{DeserializeMessageObject().ToJsonString()}");
79-
// 向上的箭头
80-
stringBuilder.AppendLine($"{'\u2191'.RepeatChar(140)}");
81-
stringBuilder.AppendLine();
82-
return StringBuilderCache.GetStringAndRelease(stringBuilder);
83-
}
84-
catch (Exception e)
85-
{
86-
LogHelper.Error(e);
87-
}
88-
89-
return string.Empty;
61+
return MessageObjectLoggerHelper.FormatMessage(Header.MessageId, Header.OperationType, Header.UniqueId, DeserializeMessageObject());
9062
}
9163

9264
/// <summary>
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
// GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2+
//
3+
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4+
//
5+
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6+
7+
using System.Text;
8+
using GameFrameX.Foundation.Json;
9+
using GameFrameX.Foundation.Logger;
10+
using GameFrameX.NetWork.Abstractions;
11+
using GameFrameX.NetWork.Messages;
12+
using GameFrameX.Utility.Extensions;
13+
14+
namespace GameFrameX.NetWork;
15+
16+
/// <summary>
17+
/// 消息对象日志帮助类
18+
/// </summary>
19+
public static class MessageObjectLoggerHelper
20+
{
21+
/// <summary>
22+
/// 格式化网络消息为可读的字符串格式
23+
/// </summary>
24+
/// <param name="messageId">消息ID</param>
25+
/// <param name="operationType">操作类型</param>
26+
/// <param name="uniqueId">唯一标识ID</param>
27+
/// <param name="messageObject">网络消息对象</param>
28+
/// <returns>格式化后的消息字符串</returns>
29+
public static string FormatMessage(int messageId, MessageOperationType operationType, int uniqueId, INetworkMessage messageObject)
30+
{
31+
try
32+
{
33+
if (LogOptions.Default.IsConsole)
34+
{
35+
// 使用StringBuilder构建格式化的控制台输出
36+
var stringBuilder = new StringBuilder();
37+
stringBuilder.Clear();
38+
stringBuilder.AppendLine();
39+
// 向下的箭头
40+
stringBuilder.AppendLine($"{'\u2193'.RepeatChar(140)}");
41+
// 消息的头部信息
42+
// 消息类型
43+
stringBuilder.Append($"---MessageType:[{messageObject.GetType().Name.CenterAlignedText(30)}]");
44+
// 消息ID
45+
stringBuilder.Append($"--MsgId:[{messageId.ToString().CenterAlignedText(11)}]({MessageIdUtility.GetMainId(messageId).ToString().CenterAlignedText(6)},{MessageIdUtility.GetSubId(messageId).ToString().CenterAlignedText(6)})");
46+
// 操作类型
47+
stringBuilder.Append($"--OpType:[{operationType.ToString().CenterAlignedText(20)}]");
48+
// 唯一ID
49+
stringBuilder.Append($"--UniqueId:[{uniqueId.ToString().CenterAlignedText(13)}]---");
50+
// 消息的内容 分割
51+
stringBuilder.AppendLine();
52+
// 消息内容
53+
stringBuilder.AppendLine($"{messageObject.ToJsonString()}");
54+
// 向上的箭头
55+
stringBuilder.AppendLine($"{'\u2191'.RepeatChar(140)}");
56+
stringBuilder.AppendLine();
57+
// 从缓存中获取并释放StringBuilder的内容
58+
return StringBuilderCache.GetStringAndRelease(stringBuilder);
59+
}
60+
61+
// 非控制台输出模式下,将消息序列化为JSON格式
62+
var messageObjectLogObject = new MessageObjectLogObject(messageObject.GetType().Name, messageId, operationType, uniqueId, messageObject);
63+
var json = JsonHelper.Serialize(messageObjectLogObject);
64+
return json;
65+
}
66+
catch (Exception e)
67+
{
68+
LogHelper.Error(e);
69+
}
70+
71+
return string.Empty;
72+
}
73+
}

GameFrameX.NetWork/Messages/MessageObject.cs

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Text;
2+
using System.Text.Json;
23
using System.Text.Json.Serialization;
34
using GameFrameX.Foundation.Json;
45
using GameFrameX.Foundation.Logger;
@@ -78,37 +79,7 @@ public void SetUniqueId(int uniqueId)
7879
/// <returns></returns>
7980
public string ToFormatMessageString()
8081
{
81-
try
82-
{
83-
var stringBuilder = new StringBuilder();
84-
stringBuilder.Clear();
85-
stringBuilder.AppendLine();
86-
// 向下的箭头
87-
stringBuilder.AppendLine($"{'\u2193'.RepeatChar(140)}");
88-
// 消息的头部信息
89-
// 消息类型
90-
stringBuilder.Append($"---MessageType:[{GetType().Name.CenterAlignedText(30)}]");
91-
// 消息ID
92-
stringBuilder.Append($"--MsgId:[{MessageId.ToString().CenterAlignedText(11)}]({MessageIdUtility.GetMainId(MessageId).ToString().CenterAlignedText(6)},{MessageIdUtility.GetSubId(MessageId).ToString().CenterAlignedText(6)})");
93-
// 操作类型
94-
stringBuilder.Append($"--OpType:[{OperationType.ToString().CenterAlignedText(20)}]");
95-
// 唯一ID
96-
stringBuilder.Append($"--UniqueId:[{UniqueId.ToString().CenterAlignedText(13)}]---");
97-
// 消息的内容 分割
98-
stringBuilder.AppendLine();
99-
// 消息内容
100-
stringBuilder.AppendLine($"{ToJsonString()}");
101-
// 向上的箭头
102-
stringBuilder.AppendLine($"{'\u2191'.RepeatChar(140)}");
103-
stringBuilder.AppendLine();
104-
return StringBuilderCache.GetStringAndRelease(stringBuilder);
105-
}
106-
catch (Exception e)
107-
{
108-
LogHelper.Error(e);
109-
}
110-
111-
return string.Empty;
82+
return MessageObjectLoggerHelper.FormatMessage(MessageId, OperationType, UniqueId, this);
11283
}
11384

11485
/// <summary>
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// GameFrameX 组织下的以及组织衍生的项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
2+
//
3+
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE 文件。
4+
//
5+
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
6+
7+
using GameFrameX.NetWork.Abstractions;
8+
9+
namespace GameFrameX.NetWork.Messages;
10+
11+
/// <summary>
12+
/// 消息对象日志
13+
/// </summary>
14+
public sealed class MessageObjectLogObject
15+
{
16+
/// <summary>
17+
/// 消息日志对象
18+
/// </summary>
19+
/// <param name="name"></param>
20+
/// <param name="messageId"></param>
21+
/// <param name="operationType"></param>
22+
/// <param name="uniqueId"></param>
23+
/// <param name="messageObject"></param>
24+
public MessageObjectLogObject(string name, int messageId, MessageOperationType operationType, int uniqueId, INetworkMessage messageObject)
25+
{
26+
MessageType = name;
27+
MessageId = messageId;
28+
OpType = operationType;
29+
UniqueId = uniqueId;
30+
Data = messageObject;
31+
}
32+
33+
/// <summary>
34+
/// 消息类型
35+
/// </summary>
36+
public string MessageType { get; set; }
37+
38+
/// <summary>
39+
/// 消息ID
40+
/// </summary>
41+
public int MessageId { get; set; }
42+
43+
/// <summary>
44+
/// 操作类型
45+
/// </summary>
46+
public MessageOperationType OpType { get; set; }
47+
48+
/// <summary>
49+
/// 唯一ID
50+
/// </summary>
51+
public int UniqueId { get; set; }
52+
53+
/// <summary>
54+
/// 消息对象
55+
/// </summary>
56+
public object Data { get; set; }
57+
}

GameFrameX.NetWork/OuterNetworkMessage.cs

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using System.Collections.Concurrent;
22
using System.Text;
33
using System.Text.Json.Serialization;
4+
using GameFrameX.Foundation.Json;
45
using GameFrameX.Foundation.Logger;
56
using GameFrameX.NetWork.Abstractions;
7+
using GameFrameX.NetWork.Messages;
68
using GameFrameX.ProtoBuf.Net;
79
using GameFrameX.Utility.Extensions;
810

@@ -63,38 +65,7 @@ public void SetMessageData(byte[] messageData)
6365
/// <returns></returns>
6466
public string ToFormatMessageString()
6567
{
66-
try
67-
{
68-
var stringBuilder = new StringBuilder();
69-
stringBuilder.Clear();
70-
stringBuilder.AppendLine();
71-
// 向下的箭头
72-
stringBuilder.AppendLine($"{'\u2193'.RepeatChar(140)}");
73-
// 消息的头部信息
74-
var messageObject = DeserializeMessageObject();
75-
// 消息类型
76-
stringBuilder.Append($"---MessageType:[{messageObject.GetType().Name.CenterAlignedText(30)}]");
77-
// 消息ID
78-
stringBuilder.Append($"--MsgId:[{Header.MessageId.ToString().CenterAlignedText(11)}]({MessageIdUtility.GetMainId(Header.MessageId).ToString().CenterAlignedText(6)},{MessageIdUtility.GetSubId(Header.MessageId).ToString().CenterAlignedText(6)})");
79-
// 操作类型
80-
stringBuilder.Append($"--OpType:[{Header.OperationType.ToString().CenterAlignedText(20)}]");
81-
// 唯一ID
82-
stringBuilder.Append($"--UniqueId:[{Header.UniqueId.ToString().CenterAlignedText(13)}]---");
83-
// 消息的内容 分割
84-
stringBuilder.AppendLine();
85-
// 消息内容
86-
stringBuilder.AppendLine($"{messageObject.ToJsonString()}");
87-
// 向上的箭头
88-
stringBuilder.AppendLine($"{'\u2191'.RepeatChar(140)}");
89-
stringBuilder.AppendLine();
90-
return StringBuilderCache.GetStringAndRelease(stringBuilder);
91-
}
92-
catch (Exception e)
93-
{
94-
LogHelper.Error(e);
95-
}
96-
97-
return string.Empty;
68+
return MessageObjectLoggerHelper.FormatMessage(Header.MessageId, Header.OperationType, Header.UniqueId, DeserializeMessageObject());
9869
}
9970

10071
/// <summary>

0 commit comments

Comments
 (0)