mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-31 23:02:06 +00:00
feature sentry report to server use log module.
This commit is contained in:
2
deps/Sentry/Sentry.cmake
vendored
2
deps/Sentry/Sentry.cmake
vendored
@@ -81,7 +81,7 @@ endif()
|
|||||||
|
|
||||||
Snapmaker_Orca_add_cmake_project(Sentry
|
Snapmaker_Orca_add_cmake_project(Sentry
|
||||||
GIT_REPOSITORY https://github.com/getsentry/sentry-native.git
|
GIT_REPOSITORY https://github.com/getsentry/sentry-native.git
|
||||||
GIT_TAG 0.12.1
|
GIT_TAG 0.12.2
|
||||||
GIT_SHALLOW ON
|
GIT_SHALLOW ON
|
||||||
PATCH_COMMAND ${SENTRY_PATCH_COMMAND}
|
PATCH_COMMAND ${SENTRY_PATCH_COMMAND}
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS
|
||||||
|
|||||||
@@ -100,8 +100,8 @@ namespace common
|
|||||||
}
|
}
|
||||||
nlohmann::json json_data;
|
nlohmann::json json_data;
|
||||||
json_file >> json_data;
|
json_file >> json_data;
|
||||||
std::string str_version = json_data["version"];
|
std::string str_version = json_data.value("version", "");
|
||||||
std::string str_build_number = json_data["build_number"];
|
std::string str_build_number = json_data.value("build_number", "");
|
||||||
|
|
||||||
std::string flutter_version = std::string("flutter_version: ") + str_version + std::string(" ") + std::string("build_number: ") +
|
std::string flutter_version = std::string("flutter_version: ") + str_version + std::string(" ") + std::string("build_number: ") +
|
||||||
str_build_number;
|
str_build_number;
|
||||||
@@ -109,4 +109,73 @@ namespace common
|
|||||||
return flutter_version;
|
return flutter_version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::string getLocalArea()
|
||||||
|
{
|
||||||
|
std::string localArea = "";
|
||||||
|
std::string cfgfile = "";
|
||||||
|
#ifdef _WIN32
|
||||||
|
wchar_t appDataPath[MAX_PATH] = {0};
|
||||||
|
auto hr = SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appDataPath);
|
||||||
|
char* path = new char[MAX_PATH];
|
||||||
|
size_t pathLength;
|
||||||
|
wcstombs_s(&pathLength, path, MAX_PATH, appDataPath, MAX_PATH);
|
||||||
|
std::string filePath = path;
|
||||||
|
cfgfile = filePath + "\\" + std::string("Snapmaker_Orca\\Snapmaker_Orca.conf");
|
||||||
|
#elif __APPLE__
|
||||||
|
const char* home_env = getenv("HOME");
|
||||||
|
cfgfile = home_env;
|
||||||
|
cfgfile = versionFilePath + "/Library/Application Support/Snapmaker_Orca/Snapmaker_Orca.conf";
|
||||||
|
#else
|
||||||
|
|
||||||
|
#endif
|
||||||
|
std::ifstream json_file(cfgfile);
|
||||||
|
if (!json_file.is_open()) {
|
||||||
|
std::ifstream json_file(cfgfile);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
nlohmann::json json_data;
|
||||||
|
json_file >> json_data;
|
||||||
|
|
||||||
|
auto dataObj = json_data.value("app", nlohmann::json::object());
|
||||||
|
localArea = dataObj.value("region", "");
|
||||||
|
|
||||||
|
return localArea;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string getLanguage()
|
||||||
|
{
|
||||||
|
std::string localLanguage = "";
|
||||||
|
|
||||||
|
std::string cfgfile = "";
|
||||||
|
#ifdef _WIN32
|
||||||
|
wchar_t appDataPath[MAX_PATH] = {0};
|
||||||
|
auto hr = SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appDataPath);
|
||||||
|
char* path = new char[MAX_PATH];
|
||||||
|
size_t pathLength;
|
||||||
|
wcstombs_s(&pathLength, path, MAX_PATH, appDataPath, MAX_PATH);
|
||||||
|
std::string filePath = path;
|
||||||
|
cfgfile = filePath + "\\" + std::string("Snapmaker_Orca\\Snapmaker_Orca.conf");
|
||||||
|
#elif __APPLE__
|
||||||
|
const char* home_env = getenv("HOME");
|
||||||
|
cfgfile = home_env;
|
||||||
|
cfgfile = versionFilePath + "/Library/Application Support/Snapmaker_Orca/Snapmaker_Orca.conf";
|
||||||
|
#else
|
||||||
|
|
||||||
|
#endif
|
||||||
|
std::ifstream json_file(cfgfile);
|
||||||
|
if (!json_file.is_open()) {
|
||||||
|
std::ifstream json_file(cfgfile);
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
nlohmann::json json_data;
|
||||||
|
json_file >> json_data;
|
||||||
|
|
||||||
|
auto dataObj = json_data.value("app", nlohmann::json::object());
|
||||||
|
localLanguage = dataObj.value("language", "");
|
||||||
|
|
||||||
|
return localLanguage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -25,6 +25,10 @@ namespace common
|
|||||||
|
|
||||||
std::string getMachineId();
|
std::string getMachineId();
|
||||||
|
|
||||||
|
std::string getLocalArea();
|
||||||
|
|
||||||
|
std::string getLanguage();
|
||||||
|
|
||||||
} // namespace common
|
} // namespace common
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -55,10 +55,13 @@ static sentry_value_t on_crash_callback(const sentry_ucontext_t* uctx, sentry_va
|
|||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static sentry_value_t before_send_log(sentry_value_t log, void* user_dataa)
|
||||||
|
{
|
||||||
|
return log;
|
||||||
|
}
|
||||||
|
|
||||||
static sentry_value_t before_send(sentry_value_t event, void* hint, void* data)
|
static sentry_value_t before_send(sentry_value_t event, void* hint, void* data)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
sentry_value_t level_val = sentry_value_get_by_key(event, SENTRY_KEY_LEVEL);
|
sentry_value_t level_val = sentry_value_get_by_key(event, SENTRY_KEY_LEVEL);
|
||||||
std::string levelName = sentry_value_as_string(level_val);
|
std::string levelName = sentry_value_as_string(level_val);
|
||||||
|
|
||||||
@@ -198,8 +201,8 @@ void initSentryEx()
|
|||||||
sentry_options_set_debug(options, 0);
|
sentry_options_set_debug(options, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// sentry_options_set_environment(options, "develop");
|
sentry_options_set_environment(options, "develop");
|
||||||
sentry_options_set_environment(options, "Release");
|
//sentry_options_set_environment(options, "Release");
|
||||||
|
|
||||||
sentry_options_set_auto_session_tracking(options, 0);
|
sentry_options_set_auto_session_tracking(options, 0);
|
||||||
sentry_options_set_symbolize_stacktraces(options, 1);
|
sentry_options_set_symbolize_stacktraces(options, 1);
|
||||||
@@ -209,6 +212,10 @@ void initSentryEx()
|
|||||||
sentry_options_set_sample_rate(options, 1.0);
|
sentry_options_set_sample_rate(options, 1.0);
|
||||||
sentry_options_set_traces_sample_rate(options, 1.0);
|
sentry_options_set_traces_sample_rate(options, 1.0);
|
||||||
|
|
||||||
|
sentry_options_set_enable_logs(options, 1);
|
||||||
|
sentry_options_set_before_send_log(options, before_send_log, NULL);
|
||||||
|
sentry_options_set_logs_with_attributes(options, true);
|
||||||
|
|
||||||
sentry_init(options);
|
sentry_init(options);
|
||||||
sentry_start_session();
|
sentry_start_session();
|
||||||
|
|
||||||
@@ -240,48 +247,67 @@ void sentryReportLogEx(SENTRY_LOG_LEVEL logLevel,
|
|||||||
const std::string& logTraceId)
|
const std::string& logTraceId)
|
||||||
{
|
{
|
||||||
sentry_level_t sentry_msg_level;
|
sentry_level_t sentry_msg_level;
|
||||||
switch (logLevel)
|
sentry_value_t tags = sentry_value_new_object();
|
||||||
{
|
|
||||||
case SENTRY_LOG_TRACE:
|
|
||||||
sentry_msg_level = SENTRY_LEVEL_TRACE;
|
|
||||||
break;
|
|
||||||
case SENTRY_LOG_DEBUG:
|
|
||||||
sentry_msg_level = SENTRY_LEVEL_DEBUG;
|
|
||||||
break;
|
|
||||||
case SENTRY_LOG_INFO:
|
|
||||||
sentry_msg_level = SENTRY_LEVEL_INFO;
|
|
||||||
break;
|
|
||||||
case SENTRY_LOG_WARNING:
|
|
||||||
sentry_msg_level = SENTRY_LEVEL_WARNING;
|
|
||||||
break;
|
|
||||||
case SENTRY_LOG_ERROR:
|
|
||||||
sentry_msg_level = SENTRY_LEVEL_ERROR;
|
|
||||||
break;
|
|
||||||
case SENTRY_LOG_FATAL:
|
|
||||||
sentry_msg_level = SENTRY_LEVEL_FATAL;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sentry_value_t event = sentry_value_new_message_event(sentry_msg_level,
|
if (!funcModule.empty())
|
||||||
funcModule.c_str(),
|
sentry_value_set_by_key(tags, "function_module", sentry_value_new_string(funcModule.c_str()));
|
||||||
logContent.c_str()
|
|
||||||
);
|
|
||||||
|
|
||||||
sentry_value_t tags = sentry_value_new_object();
|
if (!logTraceId.empty())
|
||||||
|
sentry_value_set_by_key(tags, "snapmaker_trace_id", sentry_value_new_string(logTraceId.c_str()));
|
||||||
|
|
||||||
if (!logTraceId.empty())
|
|
||||||
sentry_value_set_by_key(tags, "snapmaker_trace_id", sentry_value_new_string(logTraceId.c_str()));
|
|
||||||
|
|
||||||
if (SENTRY_LEVEL_TRACE == sentry_msg_level)
|
|
||||||
sentry_value_set_by_key(tags, BURY_POINT, sentry_value_new_string("snapmaker_bury_point"));
|
|
||||||
|
|
||||||
if (!logTagKey.empty())
|
if (!logTagKey.empty())
|
||||||
sentry_value_set_by_key(tags, logTagKey.c_str(), sentry_value_new_string(logTagValue.c_str()));
|
sentry_value_set_by_key(tags, logTagKey.c_str(), sentry_value_new_string(logTagValue.c_str()));
|
||||||
|
|
||||||
sentry_value_set_by_key(event, "snapmaker_tags", tags);
|
sentry_value_set_by_key(tags, "snapmaker_version", sentry_value_new_string(Snapmaker_VERSION));
|
||||||
sentry_capture_event(event);
|
|
||||||
|
std::string flutterVersion = common::get_flutter_version();
|
||||||
|
if (!flutterVersion.empty())
|
||||||
|
sentry_value_set_by_key(tags, "flutter_version", sentry_value_new_string(flutterVersion.c_str()));
|
||||||
|
|
||||||
|
std::string pcName = common::get_pc_name();
|
||||||
|
if (!pcName.empty())
|
||||||
|
sentry_value_set_by_key(tags, "pc_name", sentry_value_new_string(pcName.c_str()));
|
||||||
|
|
||||||
|
std::string machineID = common::getMachineId();
|
||||||
|
if (!machineID.empty())
|
||||||
|
sentry_value_set_by_key(tags, "machine_id", sentry_value_new_string(machineID.c_str()));
|
||||||
|
|
||||||
|
std::string currentLanguage = common::getLanguage();
|
||||||
|
if (!currentLanguage.empty())
|
||||||
|
sentry_value_set_by_key(tags, "current_language", sentry_value_new_string(currentLanguage.c_str()));
|
||||||
|
|
||||||
|
std::string localArea = common::getLocalArea();
|
||||||
|
if (!localArea.empty())
|
||||||
|
sentry_value_set_by_key(tags, "local_area", sentry_value_new_string(localArea.c_str()));
|
||||||
|
|
||||||
|
switch (logLevel) {
|
||||||
|
case SENTRY_LOG_TRACE:
|
||||||
|
sentry_msg_level = SENTRY_LEVEL_TRACE;
|
||||||
|
sentry_value_set_by_key(tags, BURY_POINT, sentry_value_new_string("snapmaker_bury_point"));
|
||||||
|
sentry_log_trace(logContent.c_str(), tags, 3);
|
||||||
|
break;
|
||||||
|
case SENTRY_LOG_DEBUG:
|
||||||
|
sentry_msg_level = SENTRY_LEVEL_DEBUG;
|
||||||
|
sentry_log_debug(logContent.c_str(), tags, 3);
|
||||||
|
break;
|
||||||
|
case SENTRY_LOG_INFO:
|
||||||
|
sentry_msg_level = SENTRY_LEVEL_INFO;
|
||||||
|
sentry_log_info(logContent.c_str(), tags, 3);
|
||||||
|
break;
|
||||||
|
case SENTRY_LOG_WARNING:
|
||||||
|
sentry_msg_level = SENTRY_LEVEL_WARNING;
|
||||||
|
sentry_log_warn(logContent.c_str(), tags, 3);
|
||||||
|
break;
|
||||||
|
case SENTRY_LOG_ERROR:
|
||||||
|
sentry_msg_level = SENTRY_LEVEL_ERROR;
|
||||||
|
sentry_log_error(logContent.c_str(), tags, 3);
|
||||||
|
break;
|
||||||
|
case SENTRY_LOG_FATAL:
|
||||||
|
sentry_msg_level = SENTRY_LEVEL_FATAL;
|
||||||
|
sentry_log_fatal(logContent.c_str(), tags, 3);
|
||||||
|
break;
|
||||||
|
default: return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user