mirror of
https://github.com/microsoft/PowerToys.git
synced 2024-12-25 10:01:57 +08:00
a8c99e9513
* Move KBM engine into separate process (#10672) * [KBM] Migrate KBM UI out of the runner (#10709) * Clean up keyboard hook handles (#10817) * [C++ common] Unhandled exception handler (#10821) * [KBM] Use icon in the KeyboardManagerEditor (#10845) * [KBM] Move resources from the Common project to the Editor. (#10844) * KBM Editor tests (#10858) * Rename engine executable (#10868) * clean up (#10870) * [KBM] Changed Editor and libraries output folders (#10871) * [KBM] New logs structure (#10872) * Add unhandled exception handling to the editor (#10874) * [KBM] Trace for edit keyboard window * Logging for XamlBridge message loop * [KBM] Added Editor and Engine to the installer (#10876) * Fix spelling * Interprocess communication logs, remove unnecessary windows message logs * [KBM] Separated telemetry for the engine and editor. (#10889) * [KBM] Editor test project (#10891) * Versions for the engine and the editor (#10897) * Add the editor's and the engine's executables to signing process (#10900) * [KBM editor] Run only one instance, exit when parent process exits (#10890) * [KBM] Force kill editor process to avoid XAML crash (#10907) * [KBM] Force kill editor process to avoid XAML crash * Fix event releasing Co-authored-by: mykhailopylyp <17161067+mykhailopylyp@users.noreply.github.com> * Make the editor dpi aware (#10908) * [KBM] KeyboardManagerCommon refactoring (#10909) * Do not start the process if it is already started (#10910) * logs * Update src/modules/keyboardmanager/KeyboardManagerEditorLibrary/EditKeyboardWindow.cpp * Update src/modules/keyboardmanager/KeyboardManagerEditorLibrary/EditKeyboardWindow.cpp * [KBM] Rename InitUnhandledExceptionHandler to make it explicit that is for x64 only. We will fix it properly when adding support for ARM64 and add a header with the proper conditional building. * [KBM] rename file/class/variables using camel case * [KBM] Rename "event_locker" -> "EventLocker" * [KBM] rename process_waiter Add a TODO comment * [KBM] rename methods Add TODO comment * [KBM] use uppercase for function names * [KBM] use uppercase for methos, lowercase for properties * [KBM] rename method, make methods private, formatting * [KBM] rename private variables * [KBM] use uppercase for function names * [KBM] Added support to run the editor stand-alone when built in debug mode * Update src/modules/keyboardmanager/KeyboardManagerEditor/KeyboardManagerEditor.cpp * Check success of event creation, comment (#10947) * [KBM] code formatting (#10951) * [KBM] code formatting * Update src/modules/keyboardmanager/KeyboardManagerEditorLibrary/BufferValidationHelpers.cpp * [KBM] tracing * [KBM] Remappings not showing fix. (#10954) * removed mutex * retry loop for reading * retry on reading config once * log error Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com> Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com> Co-authored-by: Seraphima Zykova <zykovas91@gmail.com> Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com> Co-authored-by: Enrico Giordani <enrico.giordani@gmail.com>
100 lines
3.0 KiB
C++
100 lines
3.0 KiB
C++
#pragma once
|
|
|
|
#include <filesystem>
|
|
#include <common/version/version.h>
|
|
#include <common/SettingsAPI/settings_helpers.h>
|
|
|
|
namespace LoggerHelpers
|
|
{
|
|
inline std::filesystem::path get_log_folder_path(std::wstring_view appPath)
|
|
{
|
|
std::filesystem::path logFolderPath(appPath);
|
|
logFolderPath.append(LogSettings::logPath);
|
|
logFolderPath.append(get_product_version());
|
|
return logFolderPath;
|
|
}
|
|
|
|
inline bool delete_old_log_folder(const std::filesystem::path& logFolderPath)
|
|
{
|
|
try
|
|
{
|
|
std::filesystem::remove_all(logFolderPath);
|
|
return true;
|
|
}
|
|
catch (std::filesystem::filesystem_error& e)
|
|
{
|
|
Logger::error("Failed to delete old log folder: {}", e.what());
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
inline bool dir_exists(std::filesystem::path dir)
|
|
{
|
|
std::error_code err;
|
|
auto entry = std::filesystem::directory_entry(dir, err);
|
|
if (err.value())
|
|
{
|
|
Logger::error("Failed to create directory entry. {}", err.message());
|
|
return false;
|
|
}
|
|
|
|
return entry.exists();
|
|
}
|
|
|
|
inline bool delete_other_versions_log_folders(std::wstring_view appPath, const std::filesystem::path& currentVersionLogFolder)
|
|
{
|
|
bool result = true;
|
|
std::filesystem::path logFolderPath(appPath);
|
|
logFolderPath.append(LogSettings::logPath);
|
|
|
|
if (!dir_exists(logFolderPath))
|
|
{
|
|
Logger::trace("Directory {} does not exist", logFolderPath.string());
|
|
return true;
|
|
}
|
|
|
|
std::error_code err;
|
|
auto folders = std::filesystem::directory_iterator(logFolderPath, err);
|
|
if (err.value())
|
|
{
|
|
Logger::error("Failed to create directory iterator for {}. {}", logFolderPath.string(), err.message());
|
|
return false;
|
|
}
|
|
|
|
for (const auto& dir : folders)
|
|
{
|
|
if (dir != currentVersionLogFolder)
|
|
{
|
|
try
|
|
{
|
|
std::filesystem::remove_all(dir);
|
|
}
|
|
catch (std::filesystem::filesystem_error& e)
|
|
{
|
|
Logger::error("Failed to delete previous version log folder: {}", e.what());
|
|
result = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
inline void init_logger(std::wstring moduleName, std::wstring internalPath, std::string loggerName)
|
|
{
|
|
std::filesystem::path rootFolder(PTSettingsHelper::get_module_save_folder_location(moduleName));
|
|
rootFolder.append(internalPath);
|
|
|
|
auto currentFolder = rootFolder;
|
|
currentFolder.append(LogSettings::logPath);
|
|
currentFolder.append(get_product_version());
|
|
|
|
auto logsPath = currentFolder;
|
|
logsPath.append(L"log.txt");
|
|
Logger::init(loggerName, logsPath.wstring(), PTSettingsHelper::get_log_settings_file_location());
|
|
|
|
delete_other_versions_log_folders(rootFolder.wstring(), currentFolder);
|
|
}
|
|
}
|