SwitchGame/source/Tool/RemoteLogger.h

50 lines
1.2 KiB
C++

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <switch.h>
#include <stdarg.h>
#include <unistd.h>
#include <string>
#include <SDL.h>
#include <vector>
class RemoteLogger
{
public:
RemoteLogger(const RemoteLogger &) = delete;
RemoteLogger &operator=(const RemoteLogger &) = delete;
RemoteLogger(RemoteLogger &&) = delete;
RemoteLogger &operator=(RemoteLogger &&) = delete;
// 全局访问点
static RemoteLogger &GetInstance()
{
static RemoteLogger instance; // 局部静态变量,保证只初始化一次
return instance;
}
// 安全格式化到字符串
static std::string format_string(const char *format, va_list vl);
public:
// 初始化函数,返回是否成功
bool Init(const char *target_ip, unsigned short target_port);
// 日志输出函数,支持格式化字符串
void log(const char *format, ...);
// 关闭连接
void close();
// 检查是否已初始化
bool isInitialized() const;
private:
RemoteLogger(/* args */);
~RemoteLogger();
int sockfd = -1;
struct sockaddr_in server_addr;
socklen_t server_len;
bool is_initialized = false;
};