UE4/UE5 日志插件(基于spdlog)

news2024/11/14 21:46:44

1 解决问题

对于高频日志序列化到本地的需求,spdlog肯定完美满足。

源码地址:https://github.com/gabime/spdlog

博主下载的版本为 spdlog-1.12.0,各位大佬可以根绝自己爱好选择。

2 过程介绍

大概目录:

SpdlogLibC目录下是对spdlog的封装:

bin里是.dll,lib放是.lib,include是.h文件。

SpdLoggerLib.Build.cs文件内容:

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;
using System.IO;


public class SpdLoggerLib : ModuleRules
{
	private string OuterLibPath
	{
		get { return Path.GetFullPath(Path.Combine(ModuleDirectory, "SpdlogLibC/")); }
	}

	public SpdLoggerLib(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;


		PublicIncludePaths.AddRange(
			new string[] { 
			
			}
			);

		PrivateIncludePaths.AddRange(
			new string[] {
				// ... add other private include paths required here ...
			}
			);
			
		
		PublicDependencyModuleNames.AddRange(
			new string[]
			{
				"Core",
				"Projects"
				// ... add other public dependencies that you statically link with here ...
			}
			);
			
		
		PrivateDependencyModuleNames.AddRange(
			new string[]
			{
				"CoreUObject",
				"Engine",
				"InputCore"// ... add private dependencies that you statically link with here ...	
			}
			);
		
		
		DynamicallyLoadedModuleNames.AddRange(
			new string[]
			{
				// ... add any modules that your module loads dynamically here ...
			}
			);

		if (Target.Platform == UnrealTargetPlatform.Win64)
		{
			string LibPath = OuterLibPath + "lib/x64/";
			string DllPath = OuterLibPath + "bin/x64/";
			string IncludePath = OuterLibPath + "include/";

			PublicSystemIncludePaths.AddRange(
				new string[] {
					IncludePath
				}
				);
			foreach (string file in Directory.GetFiles(LibPath))
			{
				PublicAdditionalLibraries.Add(file);
			}
			foreach (string file in Directory.GetFiles(DllPath))
			{
				string filename = Path.GetFileName(file);
				string outdll = "$(TargetOutputDir)/";
				outdll += filename;
				RuntimeDependencies.Add(outdll, file);
			}
		}
		else if (Target.Platform == UnrealTargetPlatform.Mac) { }
		else if (Target.Platform == UnrealTargetPlatform.Linux) { }
	}
}

3 使用简介

将插件拷贝到您的项目插件目录下:

蓝图里直接使用:

产生的日志在您的项目content根目录下:

4 插件特点

  • 屏蔽大量实现细节,只暴露一个接口到蓝图;
  • 足够高效,继承了spdlog的多线程、高并发;
  • 封装的原生dll库不区分debug和release,实用性更广。

5 下载地址

UE4/5高并发日志插件资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1312795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

牛客网SQL训练3—SQL必知必会

文章目录 一、检索数据二、排序检索数据三、过滤数据四、高级数据过滤五、用通配符进行过滤六、创建计算字段七、使用函数处理数据八、汇总数据九、分组数据十、使用子查询十一、联结表十二、创建高级联结十三、组合查询 一、检索数据 【题目1:从 Customers 表中检…

常见的Linux基本指令

目录 什么是Linux? Xshell如何远程控制云服务器 Xshell远程连接云服务器 Linux基本指令 用户管理指令 pwd指令 touch指令 mkdir指令 ls指令 cd指令 rm指令 man命令 cp指令 mv指令 cat指令 head指令 ​编辑 tail指令 ​编辑echo指令 find命令 gr…

【教程】Autojs脚本实现暂停和超时重启功能的思路和示例代码

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 背景介绍 autojs本身不支持暂停脚本,现有网上大部分最直接的做法就是在每条语句后面添加检查是否暂停。当脚本功能和代码量非常打的时候,每一条语句后面都加检测,未免不太现实。…

【SpringBoot】Starter的使用与案例讲解

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《SpringBoot》。🎯🎯 &…

Linux主机自动注册NPS客户端(脚本化)

参考官方对API使用方法的定义:https://ehang-io.github.io/nps/#/ 1、首先必须要在配置文件中开启 auth_key 并配置一个合适的密钥 2、修改脚本中的可变量参数,以适配自己的环境 #!/bin/bash # 脚本使用说明:# 脚本名称:npc_cr…

I Doc View在线文档预览系统cms.json存在RCE漏洞

文章目录 产品简介漏洞概述指纹识别漏洞利用修复建议 产品简介 i Doc View是一个在线文档解析应用,旨在提供便捷的文件查看和编辑服务。 漏洞概述 iDocView是一个在线文档I Doc View在线文档预览系统cmd.json 处存在命令执行漏洞,攻击者可通过此漏洞获…

【产品经理】需求池和版本树

在这个人人都是产品经理的时代,每位入行的产品人进阶速度与到达高度各有不同。本文作者结合自身三年产品行业的经历,根据案例拆解产品行业的极简研发过程、需求池、版本树、产品自我优化等相关具体方法论。 一、产品研发的极简过程 1. 产品概述 产品就…

第二证券:股票买卖五档什么意思?

股票生意五档是股票生意中的一个常见术语。它是指股票生意盘中最上面的五个报价。股票生意盘是股票商场上的生意报价汇总,其间卖盘代表了其时商场中卖方的报价,买盘代表了其时商场中买方的报价。 股票生意五档通常是指股票生意盘中最上面的五个报价&…

AR眼镜光学方案_AR眼镜整机硬件定制

增强现实(Augmented Reality,AR)技术通过将计算机生成的虚拟物体或其他信息叠加到真实世界中,实现对现实的增强。AR眼镜作为实现AR技术的重要设备,具备虚实结合、实时交互的特点。为了实现透视效果,AR眼镜需要同时显示真实的外部世…

差分法详解

前言 差分算法适用于一些需要对数组和序列进行增减、查询和更新操作的问题,可以提高计算效率和降低存储空间的需求。今天我将带大家学习如何使用差分法,会以例题来带大家使用差分法以增进理解。话不多说让我们开始吧! 文章目录 一维差分尾声…

3D Web轻量引擎HOOPS Communicator如何实现对大模型的渲染支持?

除了读取轻松外,HOOPS Communicator对超大模型的支持效果也非常好,它可以支持30GB的包含70万个零件和3.5亿个三角面的Catia装配模型! 那么它是如何来实现对大模型的支持呢? 我们将从以下几个方面与大家分享:最低帧率…

算法的时间复杂度是什么?

算法的时间复杂度是什么? 时间复杂度的概念 时间复杂度是用来估算出程序的运行时间的。我们通常会估计算法的操作单元数量,来代表程序消耗的时间。 随着数据规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近…

线性回归在数据库中的应用

简介 今天看到微信群有人问,如何知道数据库一年的磁盘增量?如果没有研究过统计学,IT人员对于这个问题就只能靠经验了去断定了。没经验的往往都是回复扩容越大越好。当然未来的事情我们是无法预料的。本博主就通过简单的线性回归做一个计算&am…

12. IO

1.File类 • File 类代表与平台无关的文件和目录。 • File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 1).File的常用方法 在这里插入图片描述 2).遍历给定目录所有文件 …

QT-坦克大战游戏

QT-坦克大战游戏 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "score.h" Score::Score(){health30; maxHealthhealth;QLabel *label1 new QLabel(this);label1->setFrameStyle(QFrame::Plain | QFrame::Box);label1->setStyle…

SpringCloud面试题——Sentinel

一:什么是Sentinel? Sentinel是一个面向分布式架构的轻量级服务保护框架,实现服务降级、服务熔断、服务限流等功能 二:什么是服务降级? 比如当某个服务繁忙,不能让客户端的请求一直等待,应该立刻返回给客户端一个备…

干货|你必须要知道的机器视觉常识!

Part.1 机器视觉是什么 机器视觉是一种能够模拟人类视觉系统的技术,是计算机的“慧眼”,能够使计算机理解和解释图像或视频中的信息。 机器视觉包括图像处理、机械工程技术、控制、电光源照明、光学成像、传感器、模拟与数字视频技术、计算机软硬件技术…

设计模式-状态(State)模式

目录 开发过程中的一些场景 状态模式的简单介绍 状态模式UML类图 类图讲解 适用场景 Java中的例子 案例讲解 什么是状态机 如何实现状态机 SpringBoot状态自动机 优点 缺点 与其他模式的区别 小结 开发过程中的一些场景 我们在平时的开发过程中,经常会…

C++ Qt开发:ProgressBar进度条组件

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍ProgressBar进度条组件的常用方法及灵活运用。…

SpringBoot配置mysql加密之Druid方式

一、导入Druid依赖 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.22</version> </dependency>二、生成密文 方式1. 找到存放druid jar包的目录 1-1、在目录…