当前位置: 首页 > article >正文

Unity BesHttp插件修改Error log的格式

实现代码

找到插件的 UnityOutput.cs 然后按照需求替换为下面的代码即可。如果提示 void ILogOutput.Flush() { } 接口不存在,删除这行代码即可。

using Best.HTTP.JSON.LitJson;
using System;
using System.Collections.Generic;
using UnityEngine;
using System.Text.RegularExpressions;


namespace Best.HTTP.Shared.Logger
{
    /// <summary>
    /// Provides an implementation of <see cref="ILogOutput"/> that writes log messages to the Unity Debug Console.
    /// </summary>
    public sealed class UnityOutput : ILogOutput
    {
         /// <summary>
        /// 文件url 字符的颜色
        /// </summary>
        public string _Color = "FFA500";

        /// <summary>
        /// Gets a value indicating whether this log output accepts color codes.
        /// </summary>
        /// <remarks>
        /// This property returns <c>true</c> when running in the Unity Editor and <c>false</c> otherwise.
        /// </remarks>
        public bool AcceptColor { get; } = UnityEngine.Application.isEditor;

        /// <summary>
        /// Writes a log message to the Unity Debug Console based on the specified log level.
        /// </summary>
        /// <param name="level">The log level of the message.</param>
        /// <param name="logEntry">The log message to write.</param>
        public void Write(Loglevels level, string logEntry)
        {
            switch (level)
            {
                case Loglevels.All:
                case Loglevels.Information:
                    UnityEngine.Debug.Log(logEntry);
                    break;

                case Loglevels.Warning:
                    UnityEngine.Debug.LogWarning(logEntry);
                    break;

                case Loglevels.Error:
                case Loglevels.Exception:

                    var errorLog = JsonMapper.ToObject<ErrorLog>(logEntry);
                    // 处理路径信息并修改颜色
                    string processedStack = ProcessStack(errorLog.stack);
                    string processedExStack = ProcessStack(errorLog.ex[0].stack);

                    // 重新构建日志条目
                    logEntry = $"[{errorLog.ll}] {errorLog.msg}\n" +
                                        $"Stack: {processedStack}\n" +
                                        $"Exception: {errorLog.ex[0].msg}\n" +
                                        $"Exception Stack: {processedExStack}";

                    UnityEngine.Debug.LogError(logEntry);
                    break;
            }
        }

         
        /// <summary>
        /// This implementation does nothing.
        /// </summary>
        void ILogOutput.Flush() { }

        void IDisposable.Dispose() => GC.SuppressFinalize(this);


  
        /// <summary>
        /// 修改内容,将url换成可以点击,并修改颜色
        /// </summary>
        /// <param name="stack"></param>
        /// <returns></returns>
        private string ProcessStack(string stack)
        {
            // 使用正则表达式匹配路径信息
            string pattern = @"([A-Z]:\\[^:]+:\d+)";
            string replacement = $"<color=#{_Color}>$1</color>";

            // 替换路径信息为蓝色
            string processedStack = Regex.Replace(stack, pattern, replacement);

            // 替换换行符
            processedStack = processedStack.Replace("\r\n", "\n");

            return processedStack;
        }
         
    }
     

    [SerializeField]
    public class ErrorLog
    {
        /// <summary>
        /// 
        /// </summary>
        public int tid;
        /// <summary>
        /// 
        /// </summary>
        public string div;
        /// <summary>
        /// 
        /// </summary>
        public string msg;
        /// <summary>
        /// 
        /// </summary>
        public List<ExItem> ex;
        /// <summary>
        /// 
        /// </summary>
        public string stack;
        /// <summary>
        /// 
        /// </summary>
        public List<CtxsItem> ctxs;
        /// <summary>
        /// 
        /// </summary>
        public long t;
        /// <summary>
        /// 
        /// </summary>
        public string ll;
        /// <summary>
        /// 
        /// </summary>
        public long bh;
    }

    [SerializeField]
    public class ExItem
    {
        public string msg;
        public string stack;
    }

    [SerializeField]
    public class CtxsItem
    {
        public string TypeName;
        public long Hash;
    }
     
}


功能描述

besthttp 自身的错误日志打印:
在这里插入图片描述

替换为上面的代码之后的日志打印是:
修改颜色是修改:_Color

在这里插入图片描述


http://www.kler.cn/a/372945.html

相关文章:

  • 视觉目标检测标注xml格式文件解析可视化 - python 实现
  • 【综合算法学习】(第十篇)
  • [前端][基础]JavaScript
  • Android 10.0 根据包名禁用某个app的home事件
  • 软件测试学习笔记丨SeleniumPO模式
  • Spring Boot 创建项目详细介绍
  • 数字信封原理解析:安全高效,一次一密!
  • 基于Hadoop和Hive的健康保险数据分析
  • 现代Web酒店客房管理:基于Spring Boot的实现
  • Linux scp命令语法
  • 00 硬件、嵌入式硬件知识-目录篇
  • R语言机器学习算法实战系列(十五)随机森林生存预后模型+SHAP值 (Random Survival Forest + SHAP)
  • AI虚拟主播实时互动模块的搭建与开发!
  • XSS小游戏【1-13关】
  • HTML入门教程22:HTML文件路径
  • 物联网监控数据采集,传输和存储方案:使用 GreptimeDB 和 YoMo
  • Flink CDC系列之:调研应用Flink CDC将 ELT 从 MySQL 流式传输到 Doris方案
  • 如何解决RabbitMQ消息的重复消费问题
  • ubuntu 24 (wayland)如何实现无显示器远程桌面
  • 基于Python的A*算法实现路径规划
  • 农村扶贫管理:SpringBoot解决方案
  • PPT / Powerpoint中利用LaTeX输入公式
  • 机器学习之线性回归
  • 二、k8s快速入门之docker+Kubernetes平台搭建
  • 提升网站速度与性能优化的有效策略与实践
  • ShellScript脚本编程(函数与正则表达式)