Aurora Engine 游戏引擎入门 03(第三方日志配置)


#1 第三方日志库
#2 Git submodule项目配置
#3 将库文件配置到项目

#1
使用的spdlog,高效率全能C++库

#2
使用Git将第三方库以子模块的形式进行管理,
git submodule add [REMOTE_URL] [LOCAL_DIR]
REMOTE_URL:远程仓库的地址
LOCAL_DIR:本地存储的目录

git submodule add https://github.com/gabime/spdlog Aurora/vendor/spdlog

如果使用git clone速度很慢,添加.cnpmjs.org后缀,这是国内的代理,使用方法
git submodule add https://github.com.cnpmjs.org/gabime/spdlog Aurora/vendor/spdlog

#3
spdlog的包含头文件在include文件下面,在VS中配置引用
Aurora Engine 游戏引擎入门 03(第三方日志配置)_第1张图片
$(SolutionDir)项目跟目录,系统环境配置


#1 编写日志头文件
#2 编写日志实现
#3 测试输出

#1

// Log.h
#pragma once

#include 
#include "Core.h"
// spdlog 头文件
#include "spdlog/spdlog.h"

namespace Aurora 
{
     
	using namespace spdlog;

	class AURORA_API Log
	{
     
	public:
		static void Init();

		// shared_ptr 智能指针,自动引用计数,当计数为0时自动回收对象
		// inline 内联:当函数体小,防止开辟过多的栈空间,使用内联,在编译期间就优化好了
		// 使用'&'引用同一个定义的数据类型
		// 定义的静态变量,函数必须使用静态的声明
		inline static shared_ptr<logger>& GetCoreLogger() {
      return mCoreLogger; }
		inline static shared_ptr<logger>& GetClientLogger() {
      return mClientLogger; }
	private:
		static shared_ptr<logger> mCoreLogger;
		static shared_ptr<logger> mClientLogger;
	};
}

// 简化调用,使用全局定义宏
// ...可变参数,__VA_ARGS__对...可变参数的调用
#define AO_CORE_TRACE(...)     ::Aurora::Log::GetCoreLogger()->trace(__VA_ARGS__)
#define AO_CORE_INFO(...)      ::Aurora::Log::GetCoreLogger()->info(__VA_ARGS__)
#define AO_CORE_WARN(...)      ::Aurora::Log::GetCoreLogger()->warn(__VA_ARGS__)
#define AO_CORE_ERROR(...)     ::Aurora::Log::GetCoreLogger()->error(__VA_ARGS__)
#define AO_CORE_FATAL(...)     ::Aurora::Log::GetCoreLogger()->fatal(__VA_ARGS__)

#define AO_TRACE(...)          ::Aurora::Log::GetClientLogger()->trace(__VA_ARGS__)
#define AO_INFO(...)           ::Aurora::Log::GetClientLogger()->info(__VA_ARGS__)
#define AO_WARN(...)           ::Aurora::Log::GetClientLogger()->warn(__VA_ARGS__)
#define AO_ERROR(...)          ::Aurora::Log::GetClientLogger()->error(__VA_ARGS__)
#define AO_FATAL(...)          ::Aurora::Log::GetClientLogger()->fatal(__VA_ARGS__)

#2

// Log.cpp
#include "Log.h"
#include "spdlog/sinks/stdout_color_sinks.h"

namespace Aurora
{
     
	// 因为是静态的,在没有手动回收的情况,智能指针不会计数至0
	shared_ptr<logger> Log::mCoreLogger;
	shared_ptr<logger> Log::mClientLogger;

	void Log::Init() 
	{
     
		// 设置日志的打印格式
		// %^开始颜色的标志,%$结束颜色标志
		// 更多格式见 https://github.com/gabime/spdlog/wiki/3.-Custom-formatting
		set_pattern("%^[%T] %n: %v%$");

		// 我们预设了两种带颜色名称的日志,第一种是"CORE",第二种是"SANDBOX"
		mCoreLogger = stdout_color_mt("CORE");
		mCoreLogger->set_level(level::trace);

		mClientLogger = stdout_color_mt("SANDBOX");
		mClientLogger->set_level(level::trace);
	}
}

#3
在这里插入图片描述


你可能感兴趣的:(Aurora,Aurora)