import sys import os import ctypes from enum import IntEnum from eos_result import * from eos_common import * class EOS_ELogLevel(CtypesEnum): EOS_LOG_Off = 0 EOS_LOG_Fatal = 100 EOS_LOG_Error = 200 EOS_LOG_Warning = 300 EOS_LOG_Info = 400 EOS_LOG_Verbose = 500 EOS_LOG_VeryVerbose = 600 class EOS_ELogCategory(CtypesEnum): EOS_LC_Core = 0 EOS_LC_Auth = 1 EOS_LC_Friends = 2 EOS_LC_Presence = 3 EOS_LC_UserInfo = 4 EOS_LC_HttpSerialization = 5 EOS_LC_Ecom = 6 EOS_LC_P2P = 7 EOS_LC_Sessions = 8 EOS_LC_RateLimiter = 9 EOS_LC_PlayerDataStorage = 10 EOS_LC_Analytics = 11 EOS_LC_Messaging = 12 EOS_LC_Connect = 13 EOS_LC_Overlay = 14 EOS_LC_Achievements = 15 EOS_LC_Stats = 16 EOS_LC_UI = 17 EOS_LC_Lobby = 18 EOS_LC_Leaderboards = 19 EOS_LC_Keychain = 20 EOS_LC_IntegratedPlatform = 21 EOS_LC_TitleStorage = 22 EOS_LC_Mods = 23 EOS_LC_AntiCheat = 24 EOS_LC_Reports = 25 EOS_LC_Sanctions = 26 EOS_LC_ProgressionSnapshots = 27 EOS_LC_KWS = 28 EOS_LC_RTC = 29 EOS_LC_RTCAdmin = 30 EOS_LC_CustomInvites = 31 EOS_LC_ALL_CATEGORIES = 0x7fffffff def EOS_Logging_SetLogLevel(LogCategory, LogLevel): handle.EOS_Logging_SetLogLevel.restype=ctypes.c_int handle.EOS_Logging_SetLogLevel.argtypes = [EOS_ELogLevel, EOS_ELogCategory] handle.EOS_Logging_SetLogLevel(LogCategory, LogLevel) # Define the EOS_LogMessage structure equivalent in Python class EOS_LogMessage(ctypes.Structure): _fields_ = [ ("Category", ctypes.c_char_p), ("Message", ctypes.c_char_p), ("Level", ctypes.c_int32), ] EOS_Logging_SetCallback = handle.EOS_Logging_SetCallback EOS_Logging_SetCallback.restype = ctypes.c_int32 @ctypes.CFUNCTYPE(None, ctypes.POINTER(EOS_LogMessage)) def log_callback(log_message): # Cast the log_message to the Python equivalent structure log_message = ctypes.cast(log_message, ctypes.POINTER(EOS_LogMessage)).contents # Extract the values from the log_message structure category = log_message.Category.decode('utf-8') message = log_message.Message.decode('utf-8') log_level = EOS_ELogLevel(log_message.Level) # Process the log message as needed (printing it in this case) print(f"Category: {category}, Message: {message}, Level: {log_level}")