aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/android/app/src/main/jni/android_config.cpp2
-rw-r--r--src/android/app/src/main/jni/emu_window/emu_window.cpp2
-rw-r--r--src/android/app/src/main/jni/native.cpp3
-rw-r--r--src/android/app/src/main/jni/native_config.cpp2
-rw-r--r--src/android/app/src/main/jni/native_freedreno.cpp2
-rw-r--r--src/android/app/src/main/jni/native_log.cpp5
-rw-r--r--src/audio_core/adsp/apps/audio_renderer/audio_renderer.cpp4
-rw-r--r--src/audio_core/adsp/apps/opus/opus_decoder.cpp4
-rw-r--r--src/audio_core/in/audio_in_system.cpp4
-rw-r--r--src/audio_core/out/audio_out_system.cpp4
-rw-r--r--src/audio_core/renderer/command/data_source/decode.cpp4
-rw-r--r--src/audio_core/renderer/command/mix/mix_ramp.cpp5
-rw-r--r--src/audio_core/renderer/command/mix/volume.cpp5
-rw-r--r--src/audio_core/renderer/nodes/node_states.cpp5
-rw-r--r--src/audio_core/sink/cubeb_sink.cpp4
-rw-r--r--src/audio_core/sink/oboe_sink.cpp5
-rw-r--r--src/audio_core/sink/sdl2_sink.cpp4
-rw-r--r--src/audio_core/sink/sink_details.cpp4
-rw-r--r--src/common/CMakeLists.txt12
-rw-r--r--src/common/android/applets/software_keyboard.cpp5
-rw-r--r--src/common/android/applets/web_browser.cpp4
-rw-r--r--src/common/assert.cpp4
-rw-r--r--src/common/assert.h2
-rw-r--r--src/common/fs/file.cpp4
-rw-r--r--src/common/fs/fs.cpp5
-rw-r--r--src/common/fs/path_util.cpp2
-rw-r--r--src/common/heap_tracker.cpp4
-rw-r--r--src/common/host_memory.cpp2
-rw-r--r--src/common/input.h2
-rw-r--r--src/common/log_classes.inc104
-rw-r--r--src/common/logging.cpp454
-rw-r--r--src/common/logging.h164
-rw-r--r--src/common/logging/backend.cpp369
-rw-r--r--src/common/logging/backend.h28
-rw-r--r--src/common/logging/filter.cpp242
-rw-r--r--src/common/logging/filter.h64
-rw-r--r--src/common/logging/formatter.h36
-rw-r--r--src/common/logging/log.h61
-rw-r--r--src/common/logging/log_entry.h27
-rw-r--r--src/common/logging/text_formatter.cpp110
-rw-r--r--src/common/logging/text_formatter.h21
-rw-r--r--src/common/logging/types.h135
-rw-r--r--src/common/param_package.cpp5
-rw-r--r--src/common/settings.cpp2
-rw-r--r--src/common/thread.cpp2
-rw-r--r--src/common/time_zone.cpp5
-rw-r--r--src/common/x64/cpu_detect.cpp5
-rw-r--r--src/core/arm/arm_interface.cpp4
-rw-r--r--src/core/arm/dynarmic/dynarmic_cp15.cpp4
-rw-r--r--src/core/arm/nce/interpreter_visitor.h4
-rw-r--r--src/core/arm/nce/patcher.h2
-rw-r--r--src/core/core.cpp2
-rw-r--r--src/core/crypto/aes_util.cpp2
-rw-r--r--src/core/crypto/key_manager.cpp2
-rw-r--r--src/core/debugger/debugger.cpp4
-rw-r--r--src/core/debugger/gdbstub.cpp4
-rw-r--r--src/core/file_sys/card_image.cpp5
-rw-r--r--src/core/file_sys/content_archive.cpp4
-rw-r--r--src/core/file_sys/ips_layer.cpp4
-rw-r--r--src/core/file_sys/nca_metadata.cpp4
-rw-r--r--src/core/file_sys/partition_filesystem.cpp5
-rw-r--r--src/core/file_sys/patch_manager.cpp2
-rw-r--r--src/core/file_sys/program_metadata.cpp4
-rw-r--r--src/core/file_sys/registered_cache.cpp2
-rw-r--r--src/core/file_sys/romfs_factory.cpp5
-rw-r--r--src/core/file_sys/savedata_factory.cpp4
-rw-r--r--src/core/file_sys/submission_package.cpp2
-rw-r--r--src/core/file_sys/system_archive/system_archive.cpp5
-rw-r--r--src/core/file_sys/system_archive/system_version.cpp5
-rw-r--r--src/core/file_sys/vfs/vfs_real.cpp2
-rw-r--r--src/core/frontend/applets/cabinet.cpp5
-rw-r--r--src/core/frontend/applets/controller.cpp5
-rw-r--r--src/core/frontend/applets/error.cpp5
-rw-r--r--src/core/frontend/applets/general.cpp5
-rw-r--r--src/core/frontend/applets/mii_edit.cpp5
-rw-r--r--src/core/frontend/applets/net_connect.cpp4
-rw-r--r--src/core/frontend/applets/software_keyboard.cpp5
-rw-r--r--src/core/frontend/applets/web_browser.cpp5
-rw-r--r--src/core/game_settings.cpp4
-rw-r--r--src/core/hle/kernel/k_scheduler.cpp4
-rw-r--r--src/core/hle/kernel/k_server_session.cpp5
-rw-r--r--src/core/hle/kernel/k_thread.cpp4
-rw-r--r--src/core/hle/kernel/kernel.cpp2
-rw-r--r--src/core/hle/kernel/svc/svc_processor.cpp5
-rw-r--r--src/core/hle/service/acc/acc.cpp2
-rw-r--r--src/core/hle/service/am/frontend/applet_cabinet.cpp4
-rw-r--r--src/core/hle/service/am/frontend/applet_controller.cpp4
-rw-r--r--src/core/hle/service/am/frontend/applet_error.cpp2
-rw-r--r--src/core/hle/service/am/frontend/applet_general.cpp5
-rw-r--r--src/core/hle/service/am/frontend/applet_mii_edit.cpp5
-rw-r--r--src/core/hle/service/am/frontend/applet_net_connect.cpp4
-rw-r--r--src/core/hle/service/am/frontend/applet_web_browser.cpp2
-rw-r--r--src/core/hle/service/am/service/self_controller.cpp4
-rw-r--r--src/core/hle/service/aoc/addon_content_manager.cpp5
-rw-r--r--src/core/hle/service/apm/apm_controller.cpp5
-rw-r--r--src/core/hle/service/apm/apm_interface.cpp5
-rw-r--r--src/core/hle/service/bcat/backend/backend.cpp5
-rw-r--r--src/core/hle/service/bcat/news/builtin_news.cpp2
-rw-r--r--src/core/hle/service/bcat/news/news_data_service.cpp4
-rw-r--r--src/core/hle/service/btdrv/btdrv.cpp5
-rw-r--r--src/core/hle/service/btm/btm_system.cpp5
-rw-r--r--src/core/hle/service/btm/btm_system_core.cpp5
-rw-r--r--src/core/hle/service/btm/btm_user.cpp5
-rw-r--r--src/core/hle/service/btm/btm_user_core.cpp5
-rw-r--r--src/core/hle/service/caps/caps_a.cpp4
-rw-r--r--src/core/hle/service/caps/caps_c.cpp5
-rw-r--r--src/core/hle/service/caps/caps_manager.cpp4
-rw-r--r--src/core/hle/service/caps/caps_ss.cpp5
-rw-r--r--src/core/hle/service/caps/caps_su.cpp5
-rw-r--r--src/core/hle/service/caps/caps_u.cpp5
-rw-r--r--src/core/hle/service/erpt/erpt.cpp2
-rw-r--r--src/core/hle/service/fatal/fatal.cpp4
-rw-r--r--src/core/hle/service/filesystem/filesystem.cpp2
-rw-r--r--src/core/hle/service/filesystem/fsp/fsp_srv.cpp2
-rw-r--r--src/core/hle/service/friend/friend.cpp2
-rw-r--r--src/core/hle/service/glue/arp.cpp5
-rw-r--r--src/core/hle/service/glue/bgtc.cpp5
-rw-r--r--src/core/hle/service/glue/notif.cpp4
-rw-r--r--src/core/hle/service/hid/active_vibration_device_list.cpp5
-rw-r--r--src/core/hle/service/hid/applet_resource.cpp4
-rw-r--r--src/core/hle/service/hid/hid_server.cpp4
-rw-r--r--src/core/hle/service/hid/hidbus.cpp5
-rw-r--r--src/core/hle/service/hle_ipc.cpp5
-rw-r--r--src/core/hle/service/jit/jit_context.cpp2
-rw-r--r--src/core/hle/service/lbl/lbl.cpp5
-rw-r--r--src/core/hle/service/ldn/lan_discovery.h2
-rw-r--r--src/core/hle/service/lm/lm.cpp2
-rw-r--r--src/core/hle/service/mii/mii.cpp5
-rw-r--r--src/core/hle/service/mii/mii_database_manager.cpp5
-rw-r--r--src/core/hle/service/mii/mii_manager.cpp5
-rw-r--r--src/core/hle/service/mm/mm_u.cpp4
-rw-r--r--src/core/hle/service/mnpp/mnpp_app.cpp5
-rw-r--r--src/core/hle/service/nfc/common/amiibo_crypto.cpp2
-rw-r--r--src/core/hle/service/nfc/common/device.cpp4
-rw-r--r--src/core/hle/service/nfc/common/device_manager.cpp5
-rw-r--r--src/core/hle/service/nfc/nfc.cpp5
-rw-r--r--src/core/hle/service/nfc/nfc_interface.cpp5
-rw-r--r--src/core/hle/service/nfp/nfp.cpp5
-rw-r--r--src/core/hle/service/nfp/nfp_interface.cpp5
-rw-r--r--src/core/hle/service/ns/platform_service_manager.cpp2
-rw-r--r--src/core/hle/service/ns/query_service.cpp2
-rw-r--r--src/core/hle/service/nvdrv/core/nvmap.cpp5
-rw-r--r--src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp5
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp5
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp5
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp4
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp5
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_vic.cpp5
-rw-r--r--src/core/hle/service/nvdrv/devices/nvmap.cpp4
-rw-r--r--src/core/hle/service/nvdrv/nvdrv_interface.cpp4
-rw-r--r--src/core/hle/service/nvdrv/nvmemp.cpp5
-rw-r--r--src/core/hle/service/nvnflinger/buffer_item_consumer.cpp5
-rw-r--r--src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp2
-rw-r--r--src/core/hle/service/nvnflinger/buffer_queue_producer.cpp2
-rw-r--r--src/core/hle/service/nvnflinger/consumer_base.cpp5
-rw-r--r--src/core/hle/service/nvnflinger/hos_binder_driver_server.cpp5
-rw-r--r--src/core/hle/service/prepo/prepo.cpp2
-rw-r--r--src/core/hle/service/ptm/psm.cpp4
-rw-r--r--src/core/hle/service/service.cpp2
-rw-r--r--src/core/hle/service/set/settings_server.cpp4
-rw-r--r--src/core/hle/service/set/system_settings_server.cpp2
-rw-r--r--src/core/hle/service/sm/sm_controller.cpp4
-rw-r--r--src/core/hle/service/sockets/sockets_translate.cpp2
-rw-r--r--src/core/hle/service/spl/spl_module.cpp2
-rw-r--r--src/core/hle/service/ssl/ssl_backend_none.cpp5
-rw-r--r--src/core/hle/service/usb/usb.cpp5
-rw-r--r--src/core/internal_network/emu_net_state.cpp4
-rw-r--r--src/core/internal_network/network.cpp2
-rw-r--r--src/core/internal_network/network_interface.cpp2
-rw-r--r--src/core/internal_network/socket_proxy.cpp4
-rw-r--r--src/core/internal_network/wifi_scanner.cpp2
-rw-r--r--src/core/launch_timestamp_cache.cpp2
-rw-r--r--src/core/loader/deconstructed_rom_directory.cpp4
-rw-r--r--src/core/loader/loader.cpp2
-rw-r--r--src/core/loader/nro.cpp2
-rw-r--r--src/core/loader/nso.cpp2
-rw-r--r--src/core/memory.cpp2
-rw-r--r--src/core/tools/freezer.cpp5
-rw-r--r--src/dedicated_room/yuzu_room.cpp13
-rw-r--r--src/dynarmic/src/dynarmic/ir/microinstruction.h2
-rw-r--r--src/frontend_common/config.cpp2
-rw-r--r--src/frontend_common/firmware_manager.cpp4
-rw-r--r--src/frontend_common/mod_manager.cpp2
-rw-r--r--src/frontend_common/play_time_manager.cpp2
-rw-r--r--src/frontend_common/update_checker.cpp2
-rw-r--r--src/hid_core/resource_manager.cpp5
-rw-r--r--src/hid_core/resources/npad/npad.cpp4
-rw-r--r--src/hid_core/resources/touch_screen/touch_screen_resource.cpp4
-rw-r--r--src/input_common/drivers/gc_adapter.cpp5
-rw-r--r--src/input_common/drivers/sdl_driver.cpp2
-rw-r--r--src/input_common/drivers/tas_input.cpp5
-rw-r--r--src/input_common/drivers/udp_client.cpp4
-rw-r--r--src/input_common/drivers/virtual_amiibo.cpp5
-rw-r--r--src/input_common/helpers/joycon_driver.cpp5
-rw-r--r--src/input_common/helpers/joycon_protocol/common_protocol.cpp5
-rw-r--r--src/input_common/helpers/joycon_protocol/generic_functions.cpp5
-rw-r--r--src/input_common/helpers/joycon_protocol/irs.cpp5
-rw-r--r--src/input_common/helpers/joycon_protocol/nfc.cpp4
-rw-r--r--src/input_common/helpers/joycon_protocol/poller.cpp4
-rw-r--r--src/input_common/helpers/joycon_protocol/ringcon.cpp5
-rw-r--r--src/input_common/helpers/joycon_protocol/rumble.cpp4
-rw-r--r--src/input_common/helpers/udp_protocol.cpp5
-rw-r--r--src/input_common/input_engine.cpp4
-rw-r--r--src/network/network.cpp4
-rw-r--r--src/network/room.cpp2
-rw-r--r--src/network/verify_user.h5
-rw-r--r--src/qt_common/config/qt_config.cpp2
-rw-r--r--src/qt_common/gamemode.cpp2
-rw-r--r--src/qt_common/qt_common.cpp2
-rw-r--r--src/shader_recompiler/exception.h5
-rw-r--r--src/tests/common/param_package.cpp6
-rw-r--r--src/video_core/engines/fermi_2d.cpp4
-rw-r--r--src/video_core/engines/kepler_compute.cpp5
-rw-r--r--src/video_core/engines/kepler_memory.cpp5
-rw-r--r--src/video_core/engines/maxwell_dma.cpp4
-rw-r--r--src/video_core/engines/nv01_timer.h2
-rw-r--r--src/video_core/engines/puller.cpp2
-rw-r--r--src/video_core/gpu_logging/freedreno_debug.cpp2
-rw-r--r--src/video_core/gpu_logging/gpu_logging.cpp2
-rw-r--r--src/video_core/gpu_logging/qualcomm_debug.cpp2
-rw-r--r--src/video_core/host1x/ffmpeg/ffmpeg.cpp4
-rw-r--r--src/video_core/host1x/vic.cpp2
-rw-r--r--src/video_core/macro.cpp2
-rw-r--r--src/video_core/memory_manager.cpp4
-rw-r--r--src/video_core/query_cache/query_cache.h2
-rw-r--r--src/video_core/renderer_base.cpp5
-rw-r--r--src/video_core/renderer_opengl/gl_device.cpp4
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp4
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.cpp2
-rw-r--r--src/video_core/renderer_opengl/gl_shader_util.cpp5
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp4
-rw-r--r--src/video_core/renderer_vulkan/maxwell_to_vk.cpp4
-rw-r--r--src/video_core/renderer_vulkan/pipeline_statistics.cpp5
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.cpp2
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp2
-rw-r--r--src/video_core/renderer_vulkan/vk_swapchain.cpp2
-rw-r--r--src/video_core/renderer_vulkan/vk_update_descriptor.cpp5
-rw-r--r--src/video_core/shader_environment.cpp2
-rw-r--r--src/video_core/surface.h4
-rw-r--r--src/video_core/texture_cache/format_lookup_table.cpp5
-rw-r--r--src/video_core/video_core.cpp2
-rw-r--r--src/video_core/vulkan_common/nsight_aftermath_tracker.cpp5
-rw-r--r--src/video_core/vulkan_common/vulkan_debug_callback.cpp2
-rw-r--r--src/video_core/vulkan_common/vulkan_device.h2
-rw-r--r--src/video_core/vulkan_common/vulkan_instance.cpp2
-rw-r--r--src/video_core/vulkan_common/vulkan_library.cpp5
-rw-r--r--src/video_core/vulkan_common/vulkan_memory_allocator.cpp2
-rw-r--r--src/video_core/vulkan_common/vulkan_surface.cpp2
-rw-r--r--src/video_core/vulkan_common/vulkan_wrapper.cpp2
-rw-r--r--src/web_service/announce_room_json.cpp5
-rw-r--r--src/web_service/verify_user_jwt.cpp5
-rw-r--r--src/web_service/web_backend.cpp4
-rw-r--r--src/yuzu/applets/qt_software_keyboard.cpp2
-rw-r--r--src/yuzu/applets/qt_web_browser.cpp2
-rw-r--r--src/yuzu/bootmanager.h2
-rw-r--r--src/yuzu/compatdb.cpp4
-rw-r--r--src/yuzu/configuration/configure_debug.cpp3
-rw-r--r--src/yuzu/configuration/configure_dialog.cpp2
-rw-r--r--src/yuzu/configuration/configure_graphics.cpp2
-rw-r--r--src/yuzu/configuration/configure_motion_touch.cpp4
-rw-r--r--src/yuzu/configuration/input_profiles.cpp5
-rw-r--r--src/yuzu/configuration/shared_widget.cpp2
-rw-r--r--src/yuzu/debugger/console.cpp3
-rw-r--r--src/yuzu/game/game_list.cpp2
-rw-r--r--src/yuzu/game/game_list_p.h2
-rw-r--r--src/yuzu/main_window.cpp2
-rw-r--r--src/yuzu/multiplayer/chat_room.cpp2
-rw-r--r--src/yuzu/multiplayer/client_room.cpp2
-rw-r--r--src/yuzu/multiplayer/host_room.cpp2
-rw-r--r--src/yuzu/multiplayer/lobby.cpp2
-rw-r--r--src/yuzu/multiplayer/state.cpp2
-rw-r--r--src/yuzu/util/util.cpp2
-rw-r--r--src/yuzu/vk_device_info.cpp2
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2.cpp4
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp4
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2_null.cpp5
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp5
-rw-r--r--src/yuzu_cmd/sdl_config.cpp5
-rw-r--r--src/yuzu_cmd/yuzu.cpp3
282 files changed, 1355 insertions, 1457 deletions
diff --git a/src/android/app/src/main/jni/android_config.cpp b/src/android/app/src/main/jni/android_config.cpp
index 0c5696ef3f..f697084348 100644
--- a/src/android/app/src/main/jni/android_config.cpp
+++ b/src/android/app/src/main/jni/android_config.cpp
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: GPL-3.0-or-later
#include <common/fs/path_util.h>
-#include <common/logging/log.h>
+#include <common/logging.h>
#include <common/settings.h>
#include <input_common/main.h>
#include "android_config.h"
diff --git a/src/android/app/src/main/jni/emu_window/emu_window.cpp b/src/android/app/src/main/jni/emu_window/emu_window.cpp
index 4e90cad570..4e6fd560f4 100644
--- a/src/android/app/src/main/jni/emu_window/emu_window.cpp
+++ b/src/android/app/src/main/jni/emu_window/emu_window.cpp
@@ -7,7 +7,7 @@
#include <android/native_window_jni.h>
#include "common/android/id_cache.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/drivers/android.h"
#include "input_common/drivers/touch_screen.h"
#include "input_common/drivers/virtual_amiibo.h"
diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp
index 2108e05911..210689ce55 100644
--- a/src/android/app/src/main/jni/native.cpp
+++ b/src/android/app/src/main/jni/native.cpp
@@ -42,8 +42,7 @@
#include "common/detached_tasks.h"
#include "common/dynamic_library.h"
#include "common/fs/path_util.h"
-#include "common/logging/backend.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scm_rev.h"
#include "common/scope_exit.h"
#include "common/settings.h"
diff --git a/src/android/app/src/main/jni/native_config.cpp b/src/android/app/src/main/jni/native_config.cpp
index 4536175e9d..647fdbb997 100644
--- a/src/android/app/src/main/jni/native_config.cpp
+++ b/src/android/app/src/main/jni/native_config.cpp
@@ -10,7 +10,7 @@
#include "common/android/android_common.h"
#include "common/android/id_cache.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "frontend_common/config.h"
#include "frontend_common/settings_generator.h"
diff --git a/src/android/app/src/main/jni/native_freedreno.cpp b/src/android/app/src/main/jni/native_freedreno.cpp
index 15c798e5ef..e0f57a8595 100644
--- a/src/android/app/src/main/jni/native_freedreno.cpp
+++ b/src/android/app/src/main/jni/native_freedreno.cpp
@@ -23,7 +23,7 @@
#include <jni.h>
#include "common/android/android_common.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "native.h"
namespace {
diff --git a/src/android/app/src/main/jni/native_log.cpp b/src/android/app/src/main/jni/native_log.cpp
index 95dd1f0573..c6b6fe95b7 100644
--- a/src/android/app/src/main/jni/native_log.cpp
+++ b/src/android/app/src/main/jni/native_log.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <common/android/android_common.h>
-#include <common/logging/log.h>
+#include <common/logging.h>
#include <jni.h>
extern "C" {
diff --git a/src/audio_core/adsp/apps/audio_renderer/audio_renderer.cpp b/src/audio_core/adsp/apps/audio_renderer/audio_renderer.cpp
index 238a9c863a..45a69eca03 100644
--- a/src/audio_core/adsp/apps/audio_renderer/audio_renderer.cpp
+++ b/src/audio_core/adsp/apps/audio_renderer/audio_renderer.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
@@ -11,7 +11,7 @@
#include "audio_core/audio_core.h"
#include "audio_core/common/common.h"
#include "audio_core/sink/sink.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/thread.h"
#include "core/core.h"
#include "core/core_timing.h"
diff --git a/src/audio_core/adsp/apps/opus/opus_decoder.cpp b/src/audio_core/adsp/apps/opus/opus_decoder.cpp
index ff4ea8ba2d..8a009c04c7 100644
--- a/src/audio_core/adsp/apps/opus/opus_decoder.cpp
+++ b/src/audio_core/adsp/apps/opus/opus_decoder.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
@@ -12,7 +12,7 @@
#include "audio_core/adsp/apps/opus/shared_memory.h"
#include "audio_core/audio_core.h"
#include "audio_core/common/common.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/thread.h"
#include "core/core.h"
#include "core/core_timing.h"
diff --git a/src/audio_core/in/audio_in_system.cpp b/src/audio_core/in/audio_in_system.cpp
index 44fd5ce7b6..ec1f565736 100644
--- a/src/audio_core/in/audio_in_system.cpp
+++ b/src/audio_core/in/audio_in_system.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
@@ -9,7 +9,7 @@
#include "audio_core/audio_event.h"
#include "audio_core/audio_manager.h"
#include "audio_core/in/audio_in_system.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/core_timing.h"
#include "core/hle/kernel/k_event.h"
diff --git a/src/audio_core/out/audio_out_system.cpp b/src/audio_core/out/audio_out_system.cpp
index d65f445b6a..dcb0d0694e 100644
--- a/src/audio_core/out/audio_out_system.cpp
+++ b/src/audio_core/out/audio_out_system.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
@@ -9,7 +9,7 @@
#include "audio_core/audio_event.h"
#include "audio_core/audio_manager.h"
#include "audio_core/out/audio_out_system.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/core_timing.h"
#include "core/hle/kernel/k_event.h"
diff --git a/src/audio_core/renderer/command/data_source/decode.cpp b/src/audio_core/renderer/command/data_source/decode.cpp
index 5a97aadad4..a11d73cac6 100644
--- a/src/audio_core/renderer/command/data_source/decode.cpp
+++ b/src/audio_core/renderer/command/data_source/decode.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
@@ -10,7 +10,7 @@
#include "audio_core/renderer/command/data_source/decode.h"
#include "audio_core/renderer/command/resample/resample.h"
#include "common/fixed_point.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scratch_buffer.h"
#include "core/guest_memory.h"
#include "core/memory.h"
diff --git a/src/audio_core/renderer/command/mix/mix_ramp.cpp b/src/audio_core/renderer/command/mix/mix_ramp.cpp
index 2f6500da5f..51c75b1b93 100644
--- a/src/audio_core/renderer/command/mix/mix_ramp.cpp
+++ b/src/audio_core/renderer/command/mix/mix_ramp.cpp
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
#include "audio_core/renderer/command/mix/mix_ramp.h"
#include "common/fixed_point.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
namespace AudioCore::Renderer {
diff --git a/src/audio_core/renderer/command/mix/volume.cpp b/src/audio_core/renderer/command/mix/volume.cpp
index 92baf6cc33..1e3f28c409 100644
--- a/src/audio_core/renderer/command/mix/volume.cpp
+++ b/src/audio_core/renderer/command/mix/volume.cpp
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "audio_core/adsp/apps/audio_renderer/command_list_processor.h"
#include "audio_core/renderer/command/mix/volume.h"
#include "common/fixed_point.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
namespace AudioCore::Renderer {
/**
diff --git a/src/audio_core/renderer/nodes/node_states.cpp b/src/audio_core/renderer/nodes/node_states.cpp
index 028a58041a..c39cf32393 100644
--- a/src/audio_core/renderer/nodes/node_states.cpp
+++ b/src/audio_core/renderer/nodes/node_states.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "audio_core/renderer/nodes/node_states.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
namespace AudioCore::Renderer {
diff --git a/src/audio_core/sink/cubeb_sink.cpp b/src/audio_core/sink/cubeb_sink.cpp
index a3a7a89ba4..ca42810345 100644
--- a/src/audio_core/sink/cubeb_sink.cpp
+++ b/src/audio_core/sink/cubeb_sink.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -10,7 +10,7 @@
#include "audio_core/common/common.h"
#include "audio_core/sink/cubeb_sink.h"
#include "audio_core/sink/sink_stream.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "core/core.h"
diff --git a/src/audio_core/sink/oboe_sink.cpp b/src/audio_core/sink/oboe_sink.cpp
index 466a9cc8e0..d1ead7d880 100644
--- a/src/audio_core/sink/oboe_sink.cpp
+++ b/src/audio_core/sink/oboe_sink.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +12,7 @@
#include "audio_core/common/common.h"
#include "audio_core/sink/oboe_sink.h"
#include "audio_core/sink/sink_stream.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "core/core.h"
diff --git a/src/audio_core/sink/sdl2_sink.cpp b/src/audio_core/sink/sdl2_sink.cpp
index 25ed58620e..b016bf2222 100644
--- a/src/audio_core/sink/sdl2_sink.cpp
+++ b/src/audio_core/sink/sdl2_sink.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -12,7 +12,7 @@
#include "audio_core/common/common.h"
#include "audio_core/sink/sdl2_sink.h"
#include "audio_core/sink/sink_stream.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "core/core.h"
diff --git a/src/audio_core/sink/sink_details.cpp b/src/audio_core/sink/sink_details.cpp
index 70bf75018b..4420560d22 100644
--- a/src/audio_core/sink/sink_details.cpp
+++ b/src/audio_core/sink/sink_details.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -20,7 +20,7 @@
#include "audio_core/sink/sdl2_sink.h"
#endif
#include "audio_core/sink/null_sink.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings_enums.h"
namespace AudioCore::Sink {
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 7d299b708e..fc3d9b59d8 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -75,16 +75,8 @@ add_library(
input.h
intrusive_red_black_tree.h
literals.h
- logging/backend.cpp
- logging/backend.h
- logging/filter.cpp
- logging/filter.h
- logging/formatter.h
- logging/log.h
- logging/log_entry.h
- logging/text_formatter.cpp
- logging/text_formatter.h
- logging/types.h
+ logging.cpp
+ logging.h
lz4_compression.cpp
lz4_compression.h
make_unique_for_overwrite.h
diff --git a/src/common/android/applets/software_keyboard.cpp b/src/common/android/applets/software_keyboard.cpp
index 477e62b169..db76db91a6 100644
--- a/src/common/android/applets/software_keyboard.cpp
+++ b/src/common/android/applets/software_keyboard.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +12,7 @@
#include "common/android/android_common.h"
#include "common/android/applets/software_keyboard.h"
#include "common/android/id_cache.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/string_util.h"
#include "core/core.h"
diff --git a/src/common/android/applets/web_browser.cpp b/src/common/android/applets/web_browser.cpp
index cf844ff5fc..29f1cfc4f9 100644
--- a/src/common/android/applets/web_browser.cpp
+++ b/src/common/android/applets/web_browser.cpp
@@ -1,10 +1,10 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include "common/android/android_common.h"
#include "common/android/id_cache.h"
#include "common/android/applets/web_browser.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
static jclass s_native_library_class = nullptr;
static jmethodID s_open_external_url = nullptr;
diff --git a/src/common/assert.cpp b/src/common/assert.cpp
index e6be671865..b0ddc89037 100644
--- a/src/common/assert.cpp
+++ b/src/common/assert.cpp
@@ -1,11 +1,11 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
#include "common/common_funcs.h"
-#include "common/logging/backend.h"
+#include "common/logging.h"
#include "common/settings.h"
#ifdef _MSC_VER
diff --git a/src/common/assert.h b/src/common/assert.h
index 67310f8e06..298af3071a 100644
--- a/src/common/assert.h
+++ b/src/common/assert.h
@@ -7,7 +7,7 @@
#pragma once
-#include "common/logging/log.h"
+#include "common/logging.h"
// Sometimes we want to try to continue even after hitting an assert.
// However touching this file yields a global recompilation as this header is included almost
diff --git a/src/common/fs/file.cpp b/src/common/fs/file.cpp
index 8a3135e0ed..854090e7b2 100644
--- a/src/common/fs/file.cpp
+++ b/src/common/fs/file.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
@@ -12,7 +12,7 @@
#ifdef ANDROID
#include "common/fs/fs_android.h"
#endif
-#include "common/logging/log.h"
+#include "common/logging.h"
#ifdef _WIN32
#include <io.h>
diff --git a/src/common/fs/fs.cpp b/src/common/fs/fs.cpp
index 174aed49b8..3858b0f0c3 100644
--- a/src/common/fs/fs.cpp
+++ b/src/common/fs/fs.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +10,7 @@
#include "common/fs/fs_android.h"
#endif
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
namespace Common::FS {
diff --git a/src/common/fs/path_util.cpp b/src/common/fs/path_util.cpp
index 3f928ac327..714e393293 100644
--- a/src/common/fs/path_util.cpp
+++ b/src/common/fs/path_util.cpp
@@ -16,7 +16,7 @@
#endif
#include "common/fs/fs_paths.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#ifdef _WIN32
#include <shlobj.h> // Used in GetExeDirectory()
diff --git a/src/common/heap_tracker.cpp b/src/common/heap_tracker.cpp
index a99d386d8a..b72abb16d8 100644
--- a/src/common/heap_tracker.cpp
+++ b/src/common/heap_tracker.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
@@ -6,7 +6,7 @@
#include <fstream>
#include "common/heap_tracker.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/assert.h"
namespace Common {
diff --git a/src/common/host_memory.cpp b/src/common/host_memory.cpp
index a75152eec0..d4b1709377 100644
--- a/src/common/host_memory.cpp
+++ b/src/common/host_memory.cpp
@@ -54,7 +54,7 @@
#include "common/assert.h"
#include "common/free_region_manager.h"
#include "common/host_memory.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#if defined(__ANDROID__) && __ANDROID_API__ < 30
#include <sys/syscall.h>
diff --git a/src/common/input.h b/src/common/input.h
index b076fd7e6b..bd9b2d1656 100644
--- a/src/common/input.h
+++ b/src/common/input.h
@@ -12,7 +12,7 @@
#include <ankerl/unordered_dense.h>
#include <utility>
#include <vector>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/param_package.h"
#include "common/uuid.h"
diff --git a/src/common/log_classes.inc b/src/common/log_classes.inc
new file mode 100644
index 0000000000..ba2234f041
--- /dev/null
+++ b/src/common/log_classes.inc
@@ -0,0 +1,104 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+/// Macro listing all log classes. Code should define CLS and SUB as desired before invoking this.
+
+CLS(Log)
+CLS(Common)
+SUB(Common, Filesystem)
+SUB(Common, Memory)
+CLS(Core)
+SUB(Core, ARM)
+SUB(Core, Timing)
+CLS(Config)
+CLS(Debug)
+SUB(Debug, Emulated)
+SUB(Debug, GPU)
+SUB(Debug, Breakpoint)
+SUB(Debug, GDBStub)
+CLS(Kernel)
+SUB(Kernel, SVC)
+CLS(Service)
+SUB(Service, ACC)
+SUB(Service, Audio)
+SUB(Service, AM)
+SUB(Service, AOC)
+SUB(Service, APM)
+SUB(Service, ARP)
+SUB(Service, BCAT)
+SUB(Service, BPC)
+SUB(Service, BGTC)
+SUB(Service, BTDRV)
+SUB(Service, BTM)
+SUB(Service, Capture)
+SUB(Service, ERPT)
+SUB(Service, ETicket)
+SUB(Service, EUPLD)
+SUB(Service, Fatal)
+SUB(Service, FGM)
+SUB(Service, Friend)
+SUB(Service, FS)
+SUB(Service, GRC)
+SUB(Service, HID)
+SUB(Service, IRS)
+SUB(Service, JIT)
+SUB(Service, LBL)
+SUB(Service, LDN)
+SUB(Service, LDR)
+SUB(Service, LM)
+SUB(Service, Migration)
+SUB(Service, Mii)
+SUB(Service, MM)
+SUB(Service, MNPP)
+SUB(Service, NCM)
+SUB(Service, NFC)
+SUB(Service, NFP)
+SUB(Service, NGC)
+SUB(Service, NIFM)
+SUB(Service, NIM)
+SUB(Service, NOTIF)
+SUB(Service, NPNS)
+SUB(Service, NS)
+SUB(Service, NVDRV)
+SUB(Service, Nvnflinger)
+SUB(Service, OLSC)
+SUB(Service, PCIE)
+SUB(Service, PCTL)
+SUB(Service, PCV)
+SUB(Service, PM)
+SUB(Service, PREPO)
+SUB(Service, PSC)
+SUB(Service, PTM)
+SUB(Service, SET)
+SUB(Service, SM)
+SUB(Service, SPL)
+SUB(Service, SSL)
+SUB(Service, TCAP)
+SUB(Service, Time)
+SUB(Service, USB)
+SUB(Service, VI)
+SUB(Service, WLAN)
+CLS(HW)
+SUB(HW, Memory)
+SUB(HW, LCD)
+SUB(HW, GPU)
+SUB(HW, AES)
+CLS(IPC)
+CLS(Frontend)
+CLS(Render)
+SUB(Render, Software)
+SUB(Render, OpenGL)
+SUB(Render, Vulkan)
+CLS(Shader)
+SUB(Shader, SPIRV)
+SUB(Shader, GLASM)
+SUB(Shader, GLSL)
+CLS(Audio)
+SUB(Audio, DSP)
+SUB(Audio, Sink)
+CLS(Input)
+CLS(Network)
+CLS(Loader)
+CLS(CheatEngine)
+CLS(Crypto)
+CLS(WebService)
diff --git a/src/common/logging.cpp b/src/common/logging.cpp
new file mode 100644
index 0000000000..c2f964af3e
--- /dev/null
+++ b/src/common/logging.cpp
@@ -0,0 +1,454 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+// SPDX-FileCopyrightText: 2014 Citra Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include <atomic>
+#include <chrono>
+#include <climits>
+#include <cstdlib>
+#include <regex>
+#include <thread>
+
+#if defined(__ANDROID__)
+#include <android/log.h>
+#endif
+#ifdef _WIN32
+#include <windows.h> // For OutputDebugStringW
+#else
+#include <fcntl.h>
+#include <unistd.h>
+#endif
+
+#include <boost/algorithm/string/replace.hpp>
+#include <fmt/ranges.h>
+
+#include "common/fs/file.h"
+#include "common/fs/fs.h"
+#include "common/fs/fs_paths.h"
+#include "common/fs/path_util.h"
+#include "common/literals.h"
+#include "common/polyfill_thread.h"
+#include "common/thread.h"
+
+#include "common/logging.h"
+#include "common/settings.h"
+#include "common/string_util.h"
+#include "common/bounded_threadsafe_queue.h"
+
+namespace Common::Log {
+
+namespace {
+
+/// @brief Returns the name of the passed log class as a C-string. Subclasses are separated by periods
+/// instead of underscores as in the enumeration.
+/// @note GetClassName is a macro defined by Windows.h, grrr...
+const char* GetLogClassName(Class log_class) {
+ switch (log_class) {
+#define CLS(x) case Class::x: return #x;
+#define SUB(x, y) case Class::x##_##y: return #x "." #y;
+#include "common/log_classes.inc"
+#undef CLS
+#undef SUB
+ default: return "?";
+ }
+}
+
+/// @brief Returns the name of the passed log level as a C-string.
+const char* GetLevelName(Level log_level) {
+ switch (log_level) {
+#define LVL(x) case Level::x: return #x;
+ LVL(Trace)
+ LVL(Debug)
+ LVL(Info)
+ LVL(Warning)
+ LVL(Error)
+ LVL(Critical)
+#undef LVL
+ default: return "?";
+ }
+}
+
+}
+
+// Some IDEs prefer <file>:<line> instead, so let's just do that :)
+std::string FormatLogMessage(const Entry& entry) noexcept {
+ if (!entry.filename) return "";
+ auto const time_seconds = uint32_t(entry.timestamp.count() / 1000000);
+ auto const time_fractional = uint32_t(entry.timestamp.count() % 1000000);
+ auto const class_name = GetLogClassName(entry.log_class);
+ auto const level_name = GetLevelName(entry.log_level);
+ return fmt::format("[{:4d}.{:06d}] {} <{}> {}:{}:{}: {}", time_seconds, time_fractional, class_name, level_name, entry.filename, entry.line_num, entry.function, entry.message);
+}
+
+namespace {
+template <typename It>
+Level GetLevelByName(const It begin, const It end) {
+ for (u32 i = 0; i < u32(Level::Count); ++i) {
+ const char* level_name = GetLevelName(Level(i));
+ if (Common::ComparePartialString(begin, end, level_name))
+ return Level(i);
+ }
+ return Level::Count;
+}
+
+template <typename It>
+Class GetClassByName(const It begin, const It end) {
+ for (u32 i = 0; i < u32(Class::Count); ++i) {
+ const char* level_name = GetLogClassName(Class(i));
+ if (Common::ComparePartialString(begin, end, level_name))
+ return Class(i);
+ }
+ return Class::Count;
+}
+
+template <typename Iterator>
+bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) {
+ auto level_separator = std::find(begin, end, ':');
+ if (level_separator == end) {
+ LOG_ERROR(Log, "Invalid log filter. Must specify a log level after `:`: {}", std::string(begin, end));
+ return false;
+ }
+ const Level level = GetLevelByName(level_separator + 1, end);
+ if (level == Level::Count) {
+ LOG_ERROR(Log, "Unknown log level in filter: {}", std::string(begin, end));
+ return false;
+ }
+ if (Common::ComparePartialString(begin, level_separator, "*")) {
+ instance.class_levels.fill(level);
+ return true;
+ }
+ const Class log_class = GetClassByName(begin, level_separator);
+ if (log_class == Class::Count) {
+ LOG_ERROR(Log, "Unknown log class in filter: {}", std::string(begin, end));
+ return false;
+ }
+ instance.SetClassLevel(log_class, level);
+ return true;
+}
+} // Anonymous namespace
+
+void Filter::ParseFilterString(std::string_view filter_view) {
+ auto clause_begin = filter_view.cbegin();
+ while (clause_begin != filter_view.cend()) {
+ auto clause_end = std::find(clause_begin, filter_view.cend(), ' ');
+ // If clause isn't empty
+ if (clause_end != clause_begin) {
+ ParseFilterRule(*this, clause_begin, clause_end);
+ }
+ if (clause_end != filter_view.cend()) {
+ // Skip over the whitespace
+ ++clause_end;
+ }
+ clause_begin = clause_end;
+ }
+}
+
+namespace {
+
+/// @brief Trims up to and including the last of ../, ..\, src/, src\ in a string
+/// do not be fooled this isn't generating new strings on .rodata :)
+constexpr const char* TrimSourcePath(std::string_view source) noexcept {
+ const auto rfind = [source](const std::string_view match) {
+ return source.rfind(match) == source.npos ? 0 : (source.rfind(match) + match.size());
+ };
+ auto idx = (std::max)({rfind("src/"), rfind("src\\"), rfind("../"), rfind("..\\")});
+ return source.data() + idx;
+}
+
+/// @brief Interface for logging backends.
+struct Backend {
+ virtual ~Backend() noexcept = default;
+ virtual void Write(const Entry& entry) noexcept = 0;
+ virtual void Flush() noexcept = 0;
+};
+
+/// @brief Formatting specifier (to use with printf) of the equivalent fmt::format() expression
+#define CCB_PRINTF_FMT "[%4d.%06d] %s <%s> %s:%u:%s: %s"
+
+/// @brief Instead of using fmt::format() just use the system's formatting capabilities directly
+struct DirectFormatArgs {
+ const char *class_name;
+ const char *level_name;
+ uint32_t time_seconds;
+ uint32_t time_fractional;
+};
+[[nodiscard]] inline DirectFormatArgs GetDirectFormatArgs(Entry const& entry) noexcept {
+ return {
+ .class_name = GetLogClassName(entry.log_class),
+ .level_name = GetLevelName(entry.log_level),
+ .time_seconds = uint32_t(entry.timestamp.count() / 1000000),
+ .time_fractional = uint32_t(entry.timestamp.count() % 1000000),
+ };
+}
+
+/// @brief Backend that writes to stdout and with color
+struct ColorConsoleBackend final : public Backend {
+#ifdef _WIN32
+ explicit ColorConsoleBackend() noexcept {
+ console_handle = GetStdHandle(STD_ERROR_HANDLE);
+ GetConsoleScreenBufferInfo(console_handle, &original_info);
+ }
+ ~ColorConsoleBackend() noexcept override {
+ SetConsoleTextAttribute(console_handle, original_info.wAttributes);
+ }
+ void Write(const Entry& entry) noexcept override {
+ if (enabled && console_handle != INVALID_HANDLE_VALUE) {
+ WORD color = WORD([&entry]() {
+ switch (entry.log_level) {
+ case Level::Debug: return FOREGROUND_GREEN | FOREGROUND_BLUE; // Cyan
+ case Level::Info: return FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; // Bright gray
+ case Level::Warning: return FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY;
+ case Level::Error: return FOREGROUND_RED | FOREGROUND_INTENSITY;
+ case Level::Critical: return FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY;
+ default: break;
+ }
+ return FOREGROUND_INTENSITY; // Grey
+ }());
+ SetConsoleTextAttribute(console_handle, color);
+ auto const df = GetDirectFormatArgs(entry);
+ std::fprintf(stdout, CCB_PRINTF_FMT "\n", df.time_seconds, df.time_fractional, df.class_name, df.level_name, entry.filename, entry.line_num, entry.function, entry.message.c_str());
+ }
+ }
+ void Flush() noexcept override {}
+ CONSOLE_SCREEN_BUFFER_INFO original_info = {};
+ HANDLE console_handle = INVALID_HANDLE_VALUE;
+ std::atomic_bool enabled = false;
+#else // ^^^ Windows vvv POSIX
+ explicit ColorConsoleBackend() noexcept {}
+ ~ColorConsoleBackend() noexcept override {}
+ void Write(const Entry& entry) noexcept override {
+ if (enabled) {
+#define ESC "\x1b"
+ auto const color_str = [&entry]() -> const char* {
+ switch (entry.log_level) {
+#define CCB_MAKE_COLOR_FMT(X) ESC X CCB_PRINTF_FMT ESC "[0m\n"
+ case Level::Debug: return CCB_MAKE_COLOR_FMT("[0;36m"); // Cyan
+ case Level::Info: return CCB_MAKE_COLOR_FMT("[0;37m"); // Bright gray
+ case Level::Warning: return CCB_MAKE_COLOR_FMT("[1;33m"); // Bright yellow
+ case Level::Error: return CCB_MAKE_COLOR_FMT("[1;31m"); // Bright red
+ case Level::Critical: return CCB_MAKE_COLOR_FMT("[1;35m"); // Bright magenta
+ default: return CCB_MAKE_COLOR_FMT("[1;30m"); // Grey
+#undef CCB_MAKE_COLOR_FMT
+ }
+ }();
+ auto const df = GetDirectFormatArgs(entry);
+ std::fprintf(stdout, color_str, df.time_seconds, df.time_fractional, df.class_name, df.level_name, entry.filename, entry.line_num, entry.function, entry.message.c_str());
+#undef ESC
+ }
+ }
+ void Flush() noexcept override {}
+ std::atomic_bool enabled = false;
+#endif
+};
+
+#ifndef __OPENORBIS__
+/// @brief Backend that writes to a file passed into the constructor
+struct FileBackend final : public Backend {
+ explicit FileBackend(const std::filesystem::path& filename) noexcept {
+ auto old_filename = filename;
+ old_filename += ".old.txt";
+ // Existence checks are done within the functions themselves.
+ // We don't particularly care if these succeed or not.
+ void(FS::RemoveFile(old_filename));
+ void(FS::RenameFile(filename, old_filename));
+ file.emplace(filename, FS::FileAccessMode::Write, FS::FileType::TextFile);
+ }
+ ~FileBackend() noexcept override = default;
+
+ void Write(const Entry& entry) noexcept override {
+ if (!enabled)
+ return;
+
+ auto message = FormatLogMessage(entry).append(1, '\n');
+#ifndef __ANDROID__
+ if (Settings::values.censor_username.GetValue()) {
+ // This must be a static otherwise it would get checked on EVERY
+ // instance of logging an entry...
+ static std::string username = []() -> std::string {
+ // in order of precedence
+ // LOGNAME usually works on UNIX, USERNAME on Windows
+ // Some UNIX systems suck and don't use LOGNAME so we also
+ // need USER :(
+ for (auto const var : { "LOGNAME", "USERNAME", "USER", })
+ if (auto const s = ::getenv(var); s != nullptr)
+ return std::string{s};
+ return std::string{};
+ }();
+ if (!username.empty())
+ boost::replace_all(message, username, "user");
+ }
+#endif
+ bytes_written += file->WriteString(message);
+
+ // Option to log each line rather than 4k buffers
+ if (Settings::values.log_flush_line.GetValue())
+ file->Flush();
+
+ using namespace Common::Literals;
+ // Prevent logs from exceeding a set maximum size in the event that log entries are spammed.
+ const auto write_limit = Settings::values.extended_logging.GetValue() ? 1_GiB : 100_MiB;
+ const bool write_limit_exceeded = bytes_written > write_limit;
+ if (entry.log_level >= Level::Error || write_limit_exceeded) {
+ // Stop writing after the write limit is exceeded.
+ // Don't close the file so we can print a stacktrace if necessary
+ if (write_limit_exceeded)
+ enabled = false;
+ file->Flush();
+ }
+ }
+
+ void Flush() noexcept override {
+ file->Flush();
+ }
+private:
+ std::optional<FS::IOFile> file;
+ std::size_t bytes_written = 0;
+ bool enabled = true;
+};
+#endif
+
+#ifdef _WIN32
+/// @brief Backend that writes to Visual Studio's output window
+struct DebuggerBackend final : public Backend {
+ explicit DebuggerBackend() noexcept = default;
+ ~DebuggerBackend() noexcept override = default;
+ void Write(const Entry& entry) noexcept override {
+ ::OutputDebugStringW(UTF8ToUTF16W(FormatLogMessage(entry).append(1, '\n')).c_str());
+ }
+ void Flush() noexcept override {}
+};
+#endif
+#ifdef ANDROID
+/// @brief Backend that writes to the Android logcat
+struct LogcatBackend : public Backend {
+ explicit LogcatBackend() noexcept = default;
+ ~LogcatBackend() noexcept override = default;
+ void Write(const Entry& entry) noexcept override {
+ android_LogPriority android_log_priority = [&]() {
+ switch (entry.log_level) {
+ case Level::Debug: return ANDROID_LOG_DEBUG;
+ case Level::Info: return ANDROID_LOG_INFO;
+ case Level::Warning: return ANDROID_LOG_WARN;
+ case Level::Error: return ANDROID_LOG_ERROR;
+ case Level::Critical: return ANDROID_LOG_FATAL;
+ case Level::Count:
+ case Level::Trace: return ANDROID_LOG_VERBOSE;
+ }
+ }();
+ auto const df = GetDirectFormatArgs(entry);
+ __android_log_print(android_log_priority, "YuzuNative", CCB_PRINTF_FMT, df.time_seconds, df.time_fractional, df.class_name, df.level_name, entry.filename, entry.line_num, entry.function, entry.message.c_str());
+ }
+ void Flush() noexcept override {}
+};
+#endif
+
+/// @brief Static state as a singleton.
+struct Impl {
+ // Well, I mean it's the default constructor!
+ explicit Impl() noexcept : filter(Level::Trace) {}
+
+ void StartBackendThread() noexcept {
+ backend_thread = std::jthread([this](std::stop_token stop_token) {
+ Common::SetCurrentThreadName("Logger");
+ Entry entry;
+ const auto write_logs = [this, &entry]() {
+ ForEachBackend([&entry](Backend& backend) {
+ backend.Write(entry);
+ });
+ };
+ do {
+ message_queue.PopWait(entry, stop_token);
+ write_logs();
+ } while (!stop_token.stop_requested());
+ // Drain the logging queue. Only writes out up to MAX_LOGS_TO_WRITE to prevent a
+ // case where a system is repeatedly spamming logs even on close.
+ int max_logs_to_write = filter.IsDebug() ? INT_MAX : 100;
+ while (max_logs_to_write-- && message_queue.TryPop(entry))
+ write_logs();
+ });
+ }
+
+ void StopBackendThread() noexcept {
+ backend_thread.request_stop();
+ if (backend_thread.joinable())
+ backend_thread.join();
+ ForEachBackend([](Backend& backend) { backend.Flush(); });
+ }
+
+ void ForEachBackend(auto lambda) noexcept {
+ lambda(static_cast<Backend&>(color_console_backend));
+#ifndef __OPENORBIS__
+ if (file_backend)
+ lambda(static_cast<Backend&>(*file_backend));
+#endif
+#ifdef _WIN32
+ lambda(static_cast<Backend&>(debugger_backend));
+#endif
+#ifdef ANDROID
+ lambda(static_cast<Backend&>(lc_backend));
+#endif
+ }
+
+ Filter filter;
+ ColorConsoleBackend color_console_backend{};
+#ifndef __OPENORBIS__
+ std::optional<FileBackend> file_backend;
+#endif
+#ifdef _WIN32
+ DebuggerBackend debugger_backend{};
+#endif
+#ifdef ANDROID
+ LogcatBackend lc_backend{};
+#endif
+ MPSCQueue<Entry> message_queue{};
+ std::chrono::steady_clock::time_point time_origin{std::chrono::steady_clock::now()};
+ std::jthread backend_thread;
+};
+} // namespace
+
+// Constructor shall NOT depend upon Settings() or whatever
+// it's ran at global static ctor() time... so BE CAREFUL MFER!
+static Common::Log::Impl logging_instance{};
+
+void Initialize() {
+ logging_instance.filter.ParseFilterString(Settings::values.log_filter.GetValue());
+#ifndef __OPENORBIS__
+ using namespace Common::FS;
+ const auto& log_dir = GetEdenPath(EdenPath::LogDir);
+ void(CreateDir(log_dir));
+ logging_instance.file_backend.emplace(log_dir / LOG_FILE);
+#endif
+}
+
+void Start() {
+ logging_instance.StartBackendThread();
+}
+
+void Stop() {
+ logging_instance.StopBackendThread();
+}
+
+void SetGlobalFilter(const Filter& filter) {
+ logging_instance.filter = filter;
+}
+
+void SetColorConsoleBackendEnabled(bool enabled) {
+ logging_instance.color_console_backend.enabled = enabled;
+}
+
+void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename, unsigned int line_num, const char* function, fmt::string_view format, const fmt::format_args& args) {
+ if (logging_instance.filter.CheckMessage(log_class, log_level)) {
+ logging_instance.message_queue.EmplaceWait(Entry{
+ .message = fmt::vformat(format, args),
+ .timestamp = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now() - logging_instance.time_origin),
+ .log_class = log_class,
+ .log_level = log_level,
+ .filename = TrimSourcePath(filename),
+ .function = function,
+ .line_num = line_num,
+ });
+ }
+}
+} // namespace Common::Log
diff --git a/src/common/logging.h b/src/common/logging.h
new file mode 100644
index 0000000000..eabc683f63
--- /dev/null
+++ b/src/common/logging.h
@@ -0,0 +1,164 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+// SPDX-FileCopyrightText: 2014 Citra Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <chrono>
+#include <algorithm>
+#include <type_traits>
+#include <fmt/ranges.h>
+#include "common/swap.h"
+
+// adapted from https://github.com/fmtlib/fmt/issues/2704
+// a generic formatter for enum classes
+#if FMT_VERSION >= 80100
+template <typename T>
+struct fmt::formatter<T, std::enable_if_t<std::is_enum_v<T>, char>>
+ : formatter<std::underlying_type_t<T>> {
+ template <typename FormatContext>
+ auto format(const T& value, FormatContext& ctx) const -> decltype(ctx.out()) {
+ return fmt::formatter<std::underlying_type_t<T>>::format(
+ static_cast<std::underlying_type_t<T>>(value), ctx);
+ }
+};
+#endif
+
+template <typename T, typename U>
+struct fmt::formatter<SwapStructT<T, U>> {
+ constexpr auto parse(format_parse_context& ctx) {
+ return ctx.begin();
+ }
+ template <typename FormatContext>
+ auto format(const SwapStructT<T, U>& reg, FormatContext& ctx) const {
+ return fmt::format_to(ctx.out(), "{}", T(reg));
+ }
+};
+
+#ifdef _DEBUG
+#define LOG_TRACE(log_class, ...) \
+ Common::Log::FmtLogMessage(Common::Log::Class::log_class, Common::Log::Level::Trace, \
+ __FILE__, __LINE__, __func__, __VA_ARGS__)
+#else
+#define LOG_TRACE(log_class, fmt, ...) (void(0))
+#endif
+
+#define LOG_DEBUG(log_class, ...) \
+ ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Debug, \
+ __FILE__, __LINE__, __func__, __VA_ARGS__)
+#define LOG_INFO(log_class, ...) \
+ ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Info, \
+ __FILE__, __LINE__, __func__, __VA_ARGS__)
+#define LOG_WARNING(log_class, ...) \
+ ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Warning, \
+ __FILE__, __LINE__, __func__, __VA_ARGS__)
+#define LOG_ERROR(log_class, ...) \
+ ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Error, \
+ __FILE__, __LINE__, __func__, __VA_ARGS__)
+#define LOG_CRITICAL(log_class, ...) \
+ ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Critical, \
+ __FILE__, __LINE__, __func__, __VA_ARGS__)
+
+namespace Common::Log {
+
+/// Specifies the severity or level of detail of the log message.
+enum class Level : u8 {
+ Trace, ///< Extremely detailed and repetitive debugging information that is likely to pollute logs.
+ Debug, ///< Less detailed debugging information.
+ Info, ///< Status information from important points during execution.
+ Warning, ///< Minor or potential problems found during execution of a task.
+ Error, ///< Major problems found during execution of a task that prevent it from being completed.
+ Critical, ///< Major problems during execution that threaten the stability of the entire application.
+ Count ///< Total number of logging levels
+};
+
+/// Specifies the sub-system that generated the log message.
+enum class Class : u8 {
+#define SUB(A, B) A##_##B,
+#define CLS(A) A,
+#include "log_classes.inc"
+#undef SUB
+#undef CLS
+ Count,
+};
+
+/// Logs a message to the global logger, using fmt
+void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename, unsigned int line_num, const char* function, fmt::string_view format, const fmt::format_args& args);
+
+template <typename... Args>
+void FmtLogMessage(Class log_class, Level log_level, const char* filename, unsigned int line_num, const char* function, fmt::format_string<Args...> format, const Args&... args) {
+ FmtLogMessageImpl(log_class, log_level, filename, line_num, function, format, fmt::make_format_args(args...));
+}
+
+/// Implements a log message filter which allows different log classes to have different minimum
+/// severity levels. The filter can be changed at runtime and can be parsed from a string to allow
+/// editing via the interface or loading from a configuration file.
+struct Filter {
+ /// Initializes the filter with all classes having `default_level` as the minimum level.
+ explicit Filter(Level level = Level::Info) {
+ class_levels.fill(level);
+ }
+ /// Sets the minimum level of `log_class` (and not of its subclasses) to `level`.
+ void SetClassLevel(Class log_class, Level level) {
+ class_levels[std::size_t(log_class)] = level;
+ }
+ /// Parses a filter string and applies it to this filter.
+ /// A filter string consists of a space-separated list of filter rules, each of the format
+ /// `<class>:<level>`. `<class>` is a log class name, with subclasses separated using periods.
+ /// `*` is allowed as a class name and will reset all filters to the specified level. `<level>`
+ /// a severity level name which will be set as the minimum logging level of the matched classes.
+ /// Rules are applied left to right, with each rule overriding previous ones in the sequence.
+ /// A few examples of filter rules:
+ /// - `*:Info` -- Resets the level of all classes to Info.
+ /// - `Service:Info` -- Sets the level of Service to Info.
+ /// - `Service.FS:Trace` -- Sets the level of the Service.FS class to Trace.
+ void ParseFilterString(std::string_view filter_view);
+ /// Matches class/level combination against the filter, returning true if it passed.
+ [[nodiscard]] bool CheckMessage(Class log_class, Level level) const {
+ return u8(level) >= u8(class_levels[std::size_t(log_class)]);
+ }
+ /// Returns true if any logging classes are set to debug
+ [[nodiscard]] bool IsDebug() const {
+ return std::any_of(class_levels.begin(), class_levels.end(), [](const Level& l) {
+ return u8(l) <= u8(Level::Debug);
+ });
+ }
+ std::array<Level, std::size_t(Class::Count)> class_levels;
+};
+
+/// Initializes the logging system. This should be the first thing called in main.
+void Initialize();
+
+void Start();
+
+/// Explicitly stops the logger thread and flushes the buffers
+void Stop();
+
+/// The global filter will prevent any messages from even being processed if they are filtered.
+void SetGlobalFilter(const Filter& filter);
+void SetColorConsoleBackendEnabled(bool enabled);
+
+/// @brief A log entry. Log entries are store in a structured format to permit more varied output
+/// formatting on different frontends, as well as facilitating filtering and aggregation.
+struct Entry {
+ std::string message;
+ std::chrono::microseconds timestamp;
+ Class log_class{};
+ Level log_level{};
+ const char* filename = nullptr;
+ const char* function = nullptr;
+ unsigned int line_num = 0;
+};
+
+/// Formats a log entry into the provided text buffer.
+std::string FormatLogMessage(const Entry& entry) noexcept;
+
+/// Prints the same message as `PrintMessage`, but colored according to the severity level.
+void PrintColoredMessage(const Entry& entry) noexcept;
+
+/// Formats and prints a log entry to the android logcat.
+void PrintMessageToLogcat(const Entry& entry) noexcept;
+
+} // namespace Common::Log
diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp
deleted file mode 100644
index 788cf77ca2..0000000000
--- a/src/common/logging/backend.cpp
+++ /dev/null
@@ -1,369 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// SPDX-FileCopyrightText: 2014 Citra Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include <atomic>
-#include <chrono>
-#include <climits>
-#include <cstdlib>
-#include <regex>
-#include <thread>
-
-#include <boost/algorithm/string/replace.hpp>
-#include <fmt/ranges.h>
-
-#ifdef _WIN32
-#include <windows.h> // For OutputDebugStringW
-#endif
-
-#include "common/fs/file.h"
-#include "common/fs/fs.h"
-#include "common/fs/fs_paths.h"
-#include "common/fs/path_util.h"
-#include "common/literals.h"
-#include "common/polyfill_thread.h"
-#include "common/thread.h"
-
-#include "common/logging/backend.h"
-#include "common/logging/log.h"
-#include "common/logging/log_entry.h"
-#include "common/logging/text_formatter.h"
-#include "common/settings.h"
-#ifdef _WIN32
-#include "common/string_util.h"
-#endif
-#include "common/bounded_threadsafe_queue.h"
-
-namespace Common::Log {
-
-namespace {
-
-/// @brief Trims up to and including the last of ../, ..\, src/, src\ in a string
-/// do not be fooled this isn't generating new strings on .rodata :)
-constexpr const char* TrimSourcePath(std::string_view source) noexcept {
- const auto rfind = [source](const std::string_view match) {
- return source.rfind(match) == source.npos ? 0 : (source.rfind(match) + match.size());
- };
- auto idx = (std::max)({rfind("src/"), rfind("src\\"), rfind("../"), rfind("..\\")});
- return source.data() + idx;
-}
-
-/// @brief Interface for logging backends.
-struct Backend {
- virtual ~Backend() noexcept = default;
- virtual void Write(const Entry& entry) noexcept = 0;
- virtual void EnableForStacktrace() noexcept= 0;
- virtual void Flush() noexcept = 0;
-};
-
-/// @brief Backend that writes to stderr and with color
-struct ColorConsoleBackend final : public Backend {
- explicit ColorConsoleBackend() noexcept = default;
- ~ColorConsoleBackend() noexcept override = default;
-
- void Write(const Entry& entry) noexcept override {
- if (enabled.load(std::memory_order_relaxed))
- PrintColoredMessage(entry);
- }
-
- void Flush() noexcept override {
- // stderr shouldn't be buffered
- }
-
- void EnableForStacktrace() noexcept override {
- enabled = true;
- }
-
- void SetEnabled(bool enabled_) noexcept {
- enabled = enabled_;
- }
-
-private:
- std::atomic_bool enabled{false};
-};
-
-#ifndef __OPENORBIS__
-/// @brief Backend that writes to a file passed into the constructor
-struct FileBackend final : public Backend {
- explicit FileBackend(const std::filesystem::path& filename) noexcept {
- auto old_filename = filename;
- old_filename += ".old.txt";
-
- // Existence checks are done within the functions themselves.
- // We don't particularly care if these succeed or not.
- void(FS::RemoveFile(old_filename));
- void(FS::RenameFile(filename, old_filename));
-
- file = std::make_unique<FS::IOFile>(filename, FS::FileAccessMode::Write, FS::FileType::TextFile);
- }
-
- ~FileBackend() noexcept override = default;
-
- void Write(const Entry& entry) noexcept override {
- if (!enabled)
- return;
-
- auto message = FormatLogMessage(entry).append(1, '\n');
-#ifndef __ANDROID__
- if (Settings::values.censor_username.GetValue()) {
- // This must be a static otherwise it would get checked on EVERY
- // instance of logging an entry...
- static std::string username = []() -> std::string {
- // in order of precedence
- // LOGNAME usually works on UNIX, USERNAME on Windows
- // Some UNIX systems suck and don't use LOGNAME so we also
- // need USER :(
- for (auto const var : {
- "LOGNAME",
- "USERNAME",
- "USER",
- }) {
- if (auto const s = getenv(var); s != nullptr)
- return std::string{s};
- }
-
- return std::string{};
- }();
- if (!username.empty())
- boost::replace_all(message, username, "user");
- }
-#endif
- bytes_written += file->WriteString(message);
-
- // Option to log each line rather than 4k buffers
- if (Settings::values.log_flush_line.GetValue())
- file->Flush();
-
- using namespace Common::Literals;
- // Prevent logs from exceeding a set maximum size in the event that log entries are spammed.
- const auto write_limit = Settings::values.extended_logging.GetValue() ? 1_GiB : 100_MiB;
- const bool write_limit_exceeded = bytes_written > write_limit;
- if (entry.log_level >= Level::Error || write_limit_exceeded) {
- // Stop writing after the write limit is exceeded.
- // Don't close the file so we can print a stacktrace if necessary
- if (write_limit_exceeded)
- enabled = false;
- file->Flush();
- }
- }
-
- void Flush() noexcept override {
- file->Flush();
- }
-
- void EnableForStacktrace() noexcept override {
- enabled = true;
- bytes_written = 0;
- }
-
-private:
- std::unique_ptr<FS::IOFile> file;
- std::size_t bytes_written = 0;
- bool enabled = true;
-};
-#endif
-
-#ifdef _WIN32
-/// @brief Backend that writes to Visual Studio's output window
-struct DebuggerBackend final : public Backend {
- explicit DebuggerBackend() noexcept = default;
- ~DebuggerBackend() noexcept override = default;
- void Write(const Entry& entry) noexcept override {
- ::OutputDebugStringW(UTF8ToUTF16W(FormatLogMessage(entry).append(1, '\n')).c_str());
- }
- void Flush() noexcept override {}
- void EnableForStacktrace() noexcept override {}
-};
-#endif
-#ifdef ANDROID
-/// @brief Backend that writes to the Android logcat
-struct LogcatBackend : public Backend {
- explicit LogcatBackend() noexcept = default;
- ~LogcatBackend() noexcept override = default;
- void Write(const Entry& entry) noexcept override {
- PrintMessageToLogcat(entry);
- }
- void Flush() noexcept override {}
- void EnableForStacktrace() noexcept override {}
-};
-#endif
-
-bool initialization_in_progress_suppress_logging = true;
-
-/// @brief Static state as a singleton.
-class Impl {
-public:
- static Impl& Instance() noexcept {
- if (!instance)
- std::abort();
- return *instance;
- }
-
- static void Initialize() noexcept {
- if (instance) {
- LOG_WARNING(Log, "Reinitializing logging backend");
- return;
- }
- using namespace Common::FS;
- const auto& log_dir = GetEdenPath(EdenPath::LogDir);
- void(CreateDir(log_dir));
- Filter filter;
- filter.ParseFilterString(Settings::values.log_filter.GetValue());
- instance = std::unique_ptr<Impl, decltype(&Deleter)>(new Impl(log_dir / LOG_FILE, filter), Deleter);
- initialization_in_progress_suppress_logging = false;
- }
-
- static void Start() noexcept {
- instance->StartBackendThread();
- }
-
- static void Stop() noexcept {
- instance->StopBackendThread();
- }
-
- Impl(const Impl&) noexcept = delete;
- Impl& operator=(const Impl&) noexcept = delete;
-
- Impl(Impl&&) noexcept = delete;
- Impl& operator=(Impl&&) noexcept = delete;
-
- void SetGlobalFilter(const Filter& f) noexcept {
- filter = f;
- }
-
- void SetColorConsoleBackendEnabled(bool enabled) noexcept {
- color_console_backend.SetEnabled(enabled);
- }
-
- bool CanPushEntry(Class log_class, Level log_level) const noexcept {
- return filter.CheckMessage(log_class, log_level);
- }
-
- void PushEntry(Class log_class, Level log_level, const char* filename, unsigned int line_num, const char* function, std::string&& message) noexcept {
- message_queue.EmplaceWait(CreateEntry(log_class, log_level, TrimSourcePath(filename), line_num, function, std::move(message)));
- }
-
-private:
- Impl(const std::filesystem::path& file_backend_filename, const Filter& filter_) noexcept :
- filter{filter_}
-#ifndef __OPENORBIS__
- , file_backend{file_backend_filename}
-#endif
- {}
-
- ~Impl() noexcept = default;
-
- void StartBackendThread() noexcept {
- backend_thread = std::jthread([this](std::stop_token stop_token) {
- Common::SetCurrentThreadName("Logger");
- Entry entry;
- const auto write_logs = [this, &entry]() {
- ForEachBackend([&entry](Backend& backend) {
- backend.Write(entry);
- });
- };
- do {
- message_queue.PopWait(entry, stop_token);
- write_logs();
- } while (!stop_token.stop_requested());
- // Drain the logging queue. Only writes out up to MAX_LOGS_TO_WRITE to prevent a
- // case where a system is repeatedly spamming logs even on close.
- int max_logs_to_write = filter.IsDebug() ? INT_MAX : 100;
- while (max_logs_to_write-- && message_queue.TryPop(entry))
- write_logs();
- });
- }
-
- void StopBackendThread() noexcept {
- backend_thread.request_stop();
- if (backend_thread.joinable())
- backend_thread.join();
- ForEachBackend([](Backend& backend) { backend.Flush(); });
- }
-
- Entry CreateEntry(Class log_class, Level log_level, const char* filename, unsigned int line_nr, const char* function, std::string&& message) const noexcept {
- using std::chrono::duration_cast;
- using std::chrono::microseconds;
- using std::chrono::steady_clock;
- return {
- .timestamp = duration_cast<microseconds>(steady_clock::now() - time_origin),
- .log_class = log_class,
- .log_level = log_level,
- .filename = filename,
- .line_num = line_nr,
- .function = function,
- .message = std::move(message),
- };
- }
-
- void ForEachBackend(auto lambda) noexcept {
- lambda(static_cast<Backend&>(color_console_backend));
-#ifndef __OPENORBIS__
- lambda(static_cast<Backend&>(file_backend));
-#endif
-#ifdef _WIN32
- lambda(static_cast<Backend&>(debugger_backend));
-#endif
-#ifdef ANDROID
- lambda(static_cast<Backend&>(lc_backend));
-#endif
- }
-
- static void Deleter(Impl* ptr) noexcept {
- delete ptr;
- }
-
- static inline std::unique_ptr<Impl, decltype(&Deleter)> instance{nullptr, Deleter};
-
- Filter filter;
- ColorConsoleBackend color_console_backend{};
-#ifndef __OPENORBIS__
- FileBackend file_backend;
-#endif
-#ifdef _WIN32
- DebuggerBackend debugger_backend{};
-#endif
-#ifdef ANDROID
- LogcatBackend lc_backend{};
-#endif
-
- MPSCQueue<Entry> message_queue{};
- std::chrono::steady_clock::time_point time_origin{std::chrono::steady_clock::now()};
- std::jthread backend_thread;
-};
-} // namespace
-
-void Initialize() {
- Impl::Initialize();
-}
-
-void Start() {
- Impl::Start();
-}
-
-void Stop() {
- Impl::Stop();
-}
-
-void DisableLoggingInTests() {
- initialization_in_progress_suppress_logging = true;
-}
-
-void SetGlobalFilter(const Filter& filter) {
- Impl::Instance().SetGlobalFilter(filter);
-}
-
-void SetColorConsoleBackendEnabled(bool enabled) {
- Impl::Instance().SetColorConsoleBackendEnabled(enabled);
-}
-
-void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename, unsigned int line_num, const char* function, fmt::string_view format, const fmt::format_args& args) {
- if (!initialization_in_progress_suppress_logging) {
- auto& instance = Impl::Instance();
- if (instance.CanPushEntry(log_class, log_level))
- instance.PushEntry(log_class, log_level, filename, line_num, function, fmt::vformat(format, args));
- }
-}
-} // namespace Common::Log
diff --git a/src/common/logging/backend.h b/src/common/logging/backend.h
deleted file mode 100644
index 2a9926e9e9..0000000000
--- a/src/common/logging/backend.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// SPDX-FileCopyrightText: 2014 Citra Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include "common/logging/filter.h"
-
-namespace Common::Log {
-
-class Filter;
-
-/// Initializes the logging system. This should be the first thing called in main.
-void Initialize();
-
-void Start();
-
-/// Explicitly stops the logger thread and flushes the buffers
-void Stop();
-
-void DisableLoggingInTests();
-
-/**
- * The global filter will prevent any messages from even being processed if they are filtered.
- */
-void SetGlobalFilter(const Filter& filter);
-
-void SetColorConsoleBackendEnabled(bool enabled);
-} // namespace Common::Log
diff --git a/src/common/logging/filter.cpp b/src/common/logging/filter.cpp
deleted file mode 100644
index 813e812780..0000000000
--- a/src/common/logging/filter.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// SPDX-FileCopyrightText: 2014 Citra Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include <algorithm>
-#include "common/logging/filter.h"
-#include "common/string_util.h"
-
-namespace Common::Log {
-namespace {
-template <typename It>
-Level GetLevelByName(const It begin, const It end) {
- for (u32 i = 0; i < u32(Level::Count); ++i) {
- const char* level_name = GetLevelName(Level(i));
- if (Common::ComparePartialString(begin, end, level_name))
- return Level(i);
- }
- return Level::Count;
-}
-
-template <typename It>
-Class GetClassByName(const It begin, const It end) {
- for (u32 i = 0; i < u32(Class::Count); ++i) {
- const char* level_name = GetLogClassName(Class(i));
- if (Common::ComparePartialString(begin, end, level_name))
- return Class(i);
- }
- return Class::Count;
-}
-
-template <typename Iterator>
-bool ParseFilterRule(Filter& instance, Iterator begin, Iterator end) {
- auto level_separator = std::find(begin, end, ':');
- if (level_separator == end) {
- LOG_ERROR(Log, "Invalid log filter. Must specify a log level after `:`: {}",
- std::string(begin, end));
- return false;
- }
-
- const Level level = GetLevelByName(level_separator + 1, end);
- if (level == Level::Count) {
- LOG_ERROR(Log, "Unknown log level in filter: {}", std::string(begin, end));
- return false;
- }
-
- if (Common::ComparePartialString(begin, level_separator, "*")) {
- instance.ResetAll(level);
- return true;
- }
-
- const Class log_class = GetClassByName(begin, level_separator);
- if (log_class == Class::Count) {
- LOG_ERROR(Log, "Unknown log class in filter: {}", std::string(begin, end));
- return false;
- }
-
- instance.SetClassLevel(log_class, level);
- return true;
-}
-} // Anonymous namespace
-
-/// Macro listing all log classes. Code should define CLS and SUB as desired before invoking this.
-#define ALL_LOG_CLASSES() \
- CLS(Log) \
- CLS(Common) \
- SUB(Common, Filesystem) \
- SUB(Common, Memory) \
- CLS(Core) \
- SUB(Core, ARM) \
- SUB(Core, Timing) \
- CLS(Config) \
- CLS(Debug) \
- SUB(Debug, Emulated) \
- SUB(Debug, GPU) \
- SUB(Debug, Breakpoint) \
- SUB(Debug, GDBStub) \
- CLS(Kernel) \
- SUB(Kernel, SVC) \
- CLS(Service) \
- SUB(Service, ACC) \
- SUB(Service, Audio) \
- SUB(Service, AM) \
- SUB(Service, AOC) \
- SUB(Service, APM) \
- SUB(Service, ARP) \
- SUB(Service, BCAT) \
- SUB(Service, BPC) \
- SUB(Service, BGTC) \
- SUB(Service, BTDRV) \
- SUB(Service, BTM) \
- SUB(Service, Capture) \
- SUB(Service, ERPT) \
- SUB(Service, ETicket) \
- SUB(Service, EUPLD) \
- SUB(Service, Fatal) \
- SUB(Service, FGM) \
- SUB(Service, Friend) \
- SUB(Service, FS) \
- SUB(Service, GRC) \
- SUB(Service, HID) \
- SUB(Service, IRS) \
- SUB(Service, JIT) \
- SUB(Service, LBL) \
- SUB(Service, LDN) \
- SUB(Service, LDR) \
- SUB(Service, LM) \
- SUB(Service, Migration) \
- SUB(Service, Mii) \
- SUB(Service, MM) \
- SUB(Service, MNPP) \
- SUB(Service, NCM) \
- SUB(Service, NFC) \
- SUB(Service, NFP) \
- SUB(Service, NGC) \
- SUB(Service, NIFM) \
- SUB(Service, NIM) \
- SUB(Service, NOTIF) \
- SUB(Service, NPNS) \
- SUB(Service, NS) \
- SUB(Service, NVDRV) \
- SUB(Service, Nvnflinger) \
- SUB(Service, OLSC) \
- SUB(Service, PCIE) \
- SUB(Service, PCTL) \
- SUB(Service, PCV) \
- SUB(Service, PM) \
- SUB(Service, PREPO) \
- SUB(Service, PSC) \
- SUB(Service, PTM) \
- SUB(Service, SET) \
- SUB(Service, SM) \
- SUB(Service, SPL) \
- SUB(Service, SSL) \
- SUB(Service, TCAP) \
- SUB(Service, Time) \
- SUB(Service, USB) \
- SUB(Service, VI) \
- SUB(Service, WLAN) \
- CLS(HW) \
- SUB(HW, Memory) \
- SUB(HW, LCD) \
- SUB(HW, GPU) \
- SUB(HW, AES) \
- CLS(IPC) \
- CLS(Frontend) \
- CLS(Render) \
- SUB(Render, Software) \
- SUB(Render, OpenGL) \
- SUB(Render, Vulkan) \
- CLS(Shader) \
- SUB(Shader, SPIRV) \
- SUB(Shader, GLASM) \
- SUB(Shader, GLSL) \
- CLS(Audio) \
- SUB(Audio, DSP) \
- SUB(Audio, Sink) \
- CLS(Input) \
- CLS(Network) \
- CLS(Loader) \
- CLS(CheatEngine) \
- CLS(Crypto) \
- CLS(WebService)
-
-// GetClassName is a macro defined by Windows.h, grrr...
-const char* GetLogClassName(Class log_class) {
- switch (log_class) {
-#define CLS(x) \
- case Class::x: \
- return #x;
-#define SUB(x, y) \
- case Class::x##_##y: \
- return #x "." #y;
- ALL_LOG_CLASSES()
-#undef CLS
-#undef SUB
- case Class::Count:
- break;
- }
- return "Invalid";
-}
-
-const char* GetLevelName(Level log_level) {
-#define LVL(x) \
- case Level::x: \
- return #x
- switch (log_level) {
- LVL(Trace);
- LVL(Debug);
- LVL(Info);
- LVL(Warning);
- LVL(Error);
- LVL(Critical);
- case Level::Count:
- break;
- }
-#undef LVL
- return "Invalid";
-}
-
-Filter::Filter(Level default_level) {
- ResetAll(default_level);
-}
-
-void Filter::ResetAll(Level level) {
- class_levels.fill(level);
-}
-
-void Filter::SetClassLevel(Class log_class, Level level) {
- class_levels[static_cast<std::size_t>(log_class)] = level;
-}
-
-void Filter::ParseFilterString(std::string_view filter_view) {
- auto clause_begin = filter_view.cbegin();
- while (clause_begin != filter_view.cend()) {
- auto clause_end = std::find(clause_begin, filter_view.cend(), ' ');
-
- // If clause isn't empty
- if (clause_end != clause_begin) {
- ParseFilterRule(*this, clause_begin, clause_end);
- }
-
- if (clause_end != filter_view.cend()) {
- // Skip over the whitespace
- ++clause_end;
- }
- clause_begin = clause_end;
- }
-}
-
-bool Filter::CheckMessage(Class log_class, Level level) const {
- return u8(level) >= u8(class_levels[std::size_t(log_class)]);
-}
-
-bool Filter::IsDebug() const {
- return std::any_of(class_levels.begin(), class_levels.end(), [](const Level& l) {
- return u8(l) <= u8(Level::Debug);
- });
-}
-
-} // namespace Common::Log
diff --git a/src/common/logging/filter.h b/src/common/logging/filter.h
deleted file mode 100644
index 54d172cc02..0000000000
--- a/src/common/logging/filter.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// SPDX-FileCopyrightText: 2014 Citra Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <array>
-#include <chrono>
-#include <cstddef>
-#include "common/logging/log.h"
-
-namespace Common::Log {
-
-/**
- * Returns the name of the passed log class as a C-string. Subclasses are separated by periods
- * instead of underscores as in the enumeration.
- */
-const char* GetLogClassName(Class log_class);
-
-/**
- * Returns the name of the passed log level as a C-string.
- */
-const char* GetLevelName(Level log_level);
-
-/**
- * Implements a log message filter which allows different log classes to have different minimum
- * severity levels. The filter can be changed at runtime and can be parsed from a string to allow
- * editing via the interface or loading from a configuration file.
- */
-class Filter {
-public:
- /// Initializes the filter with all classes having `default_level` as the minimum level.
- explicit Filter(Level default_level = Level::Info);
-
- /// Resets the filter so that all classes have `level` as the minimum displayed level.
- void ResetAll(Level level);
- /// Sets the minimum level of `log_class` (and not of its subclasses) to `level`.
- void SetClassLevel(Class log_class, Level level);
-
- /**
- * Parses a filter string and applies it to this filter.
- *
- * A filter string consists of a space-separated list of filter rules, each of the format
- * `<class>:<level>`. `<class>` is a log class name, with subclasses separated using periods.
- * `*` is allowed as a class name and will reset all filters to the specified level. `<level>`
- * a severity level name which will be set as the minimum logging level of the matched classes.
- * Rules are applied left to right, with each rule overriding previous ones in the sequence.
- *
- * A few examples of filter rules:
- * - `*:Info` -- Resets the level of all classes to Info.
- * - `Service:Info` -- Sets the level of Service to Info.
- * - `Service.FS:Trace` -- Sets the level of the Service.FS class to Trace.
- */
- void ParseFilterString(std::string_view filter_view);
-
- /// Matches class/level combination against the filter, returning true if it passed.
- bool CheckMessage(Class log_class, Level level) const;
-
- /// Returns true if any logging classes are set to debug
- bool IsDebug() const;
-
-private:
- std::array<Level, static_cast<std::size_t>(Class::Count)> class_levels;
-};
-} // namespace Common::Log
diff --git a/src/common/logging/formatter.h b/src/common/logging/formatter.h
deleted file mode 100644
index 343174a0c7..0000000000
--- a/src/common/logging/formatter.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <type_traits>
-#include <fmt/ranges.h>
-#include "common/swap.h"
-
-// adapted from https://github.com/fmtlib/fmt/issues/2704
-// a generic formatter for enum classes
-#if FMT_VERSION >= 80100
-template <typename T>
-struct fmt::formatter<T, std::enable_if_t<std::is_enum_v<T>, char>>
- : formatter<std::underlying_type_t<T>> {
- template <typename FormatContext>
- auto format(const T& value, FormatContext& ctx) const -> decltype(ctx.out()) {
- return fmt::formatter<std::underlying_type_t<T>>::format(
- static_cast<std::underlying_type_t<T>>(value), ctx);
- }
-};
-#endif
-
-template <typename T, typename U>
-struct fmt::formatter<SwapStructT<T, U>> {
- constexpr auto parse(format_parse_context& ctx) {
- return ctx.begin();
- }
- template <typename FormatContext>
- auto format(const SwapStructT<T, U>& reg, FormatContext& ctx) const {
- return fmt::format_to(ctx.out(), "{}", T(reg));
- }
-};
diff --git a/src/common/logging/log.h b/src/common/logging/log.h
deleted file mode 100644
index 757cf464d5..0000000000
--- a/src/common/logging/log.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// SPDX-FileCopyrightText: 2014 Citra Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <algorithm>
-#include <string_view>
-
-#include <fmt/ranges.h>
-
-#include "common/logging/formatter.h"
-#include "common/logging/types.h"
-
-namespace Common::Log {
-
-/// Logs a message to the global logger, using fmt
-void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename,
- unsigned int line_num, const char* function, fmt::string_view format,
- const fmt::format_args& args);
-
-template <typename... Args>
-void FmtLogMessage(Class log_class, Level log_level, const char* filename, unsigned int line_num,
- const char* function, fmt::format_string<Args...> format, const Args&... args) {
- FmtLogMessageImpl(log_class, log_level, filename, line_num, function, format,
- fmt::make_format_args(args...));
-}
-
-} // namespace Common::Log
-
-#ifdef _DEBUG
-#define LOG_TRACE(log_class, ...) \
- Common::Log::FmtLogMessage(Common::Log::Class::log_class, Common::Log::Level::Trace, \
- __FILE__, __LINE__, __func__, \
- __VA_ARGS__)
-#else
-#define LOG_TRACE(log_class, fmt, ...) (void(0))
-#endif
-
-#define LOG_DEBUG(log_class, ...) \
- ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Debug, \
- __FILE__, __LINE__, __func__, \
- __VA_ARGS__)
-#define LOG_INFO(log_class, ...) \
- ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Info, \
- __FILE__, __LINE__, __func__, \
- __VA_ARGS__)
-#define LOG_WARNING(log_class, ...) \
- ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Warning, \
- __FILE__, __LINE__, __func__, \
- __VA_ARGS__)
-#define LOG_ERROR(log_class, ...) \
- ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Error, \
- __FILE__, __LINE__, __func__, \
- __VA_ARGS__)
-#define LOG_CRITICAL(log_class, ...) \
- ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Critical, \
- __FILE__, __LINE__, __func__, \
- __VA_ARGS__)
diff --git a/src/common/logging/log_entry.h b/src/common/logging/log_entry.h
deleted file mode 100644
index 23f1aaf625..0000000000
--- a/src/common/logging/log_entry.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <chrono>
-
-#include "common/logging/types.h"
-
-namespace Common::Log {
-
-/// @brief A log entry. Log entries are store in a structured format to permit more varied output
-/// formatting on different frontends, as well as facilitating filtering and aggregation.
-struct Entry {
- std::chrono::microseconds timestamp;
- Class log_class{};
- Level log_level{};
- const char* filename = nullptr;
- unsigned int line_num = 0;
- const char* function = nullptr;
- std::string message;
-};
-
-} // namespace Common::Log
diff --git a/src/common/logging/text_formatter.cpp b/src/common/logging/text_formatter.cpp
deleted file mode 100644
index dee1f770bc..0000000000
--- a/src/common/logging/text_formatter.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// SPDX-FileCopyrightText: 2014 Citra Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include <array>
-#include <cstdio>
-#include <cstdint>
-#include <string>
-
-#ifdef _WIN32
-#include <windows.h>
-#elif defined(__ANDROID__)
-#include <android/log.h>
-#endif
-
-#include "common/assert.h"
-#include "common/logging/filter.h"
-#include "common/logging/log.h"
-#include "common/logging/log_entry.h"
-#include "common/logging/text_formatter.h"
-
-namespace Common::Log {
-
-// Some IDEs prefer <file>:<line> instead, so let's just do that :)
-std::string FormatLogMessage(const Entry& entry) noexcept {
- if (!entry.filename) return "";
-
- auto const time_seconds = uint32_t(entry.timestamp.count() / 1000000);
- auto const time_fractional = uint32_t(entry.timestamp.count() % 1000000);
- auto const class_name = GetLogClassName(entry.log_class);
- auto const level_name = GetLevelName(entry.log_level);
- return fmt::format("[{:4d}.{:06d}] {} <{}> {}:{}:{}: {}", time_seconds, time_fractional,
- class_name, level_name, entry.filename, entry.line_num, entry.function,
- entry.message);
-}
-
-/// @brief Formats and prints a log entry to stderr.
-static void PrintMessage(const Entry& entry) noexcept {
-#ifdef _WIN32
- auto const str = FormatLogMessage(entry).append(1, '\n');
- fwrite(str.c_str(), 1, str.size(), stderr);
-#else
-#define ESC "\x1b"
- auto const color_str = [&entry]() -> const char* {
- switch (entry.log_level) {
- case Level::Debug: return ESC "[0;36m"; // Cyan
- case Level::Info: return ESC "[0;37m"; // Bright gray
- case Level::Warning: return ESC "[1;33m"; // Bright yellow
- case Level::Error: return ESC "[1;31m"; // Bright red
- case Level::Critical: return ESC "[1;35m"; // Bright magenta
- default: return ESC "[1;30m"; // Grey
- }
- }();
- auto const time_seconds = uint32_t(entry.timestamp.count() / 1000000);
- auto const time_fractional = uint32_t(entry.timestamp.count() % 1000000);
- auto const class_name = GetLogClassName(entry.log_class);
- auto const level_name = GetLevelName(entry.log_level);
- fprintf(stderr, "%s[%4d.%06d] %s <%s> %s:%u:%s: %s" ESC "[0m\n", color_str,
- time_seconds, time_fractional, class_name, level_name, entry.filename,
- entry.line_num, entry.function, entry.message.c_str());
-#undef ESC
-#endif
-}
-
-void PrintColoredMessage(const Entry& entry) noexcept {
-#ifdef _WIN32
- HANDLE console_handle = GetStdHandle(STD_ERROR_HANDLE);
- if (console_handle == INVALID_HANDLE_VALUE)
- return;
- CONSOLE_SCREEN_BUFFER_INFO original_info = {};
- GetConsoleScreenBufferInfo(console_handle, &original_info);
- WORD color = WORD([&entry]() {
- switch (entry.log_level) {
- case Level::Debug: return FOREGROUND_GREEN | FOREGROUND_BLUE; // Cyan
- case Level::Info: return FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; // Bright gray
- case Level::Warning: return FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY;
- case Level::Error: return FOREGROUND_RED | FOREGROUND_INTENSITY;
- case Level::Critical: return FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY;
- default: break;
- }
- return FOREGROUND_INTENSITY; // Grey
- }());
- SetConsoleTextAttribute(console_handle, color);
-#endif
- PrintMessage(entry);
-#ifdef _WIN32
- SetConsoleTextAttribute(console_handle, original_info.wAttributes);
-#endif
-}
-
-void PrintMessageToLogcat(const Entry& entry) noexcept {
-#ifdef ANDROID
- android_LogPriority android_log_priority = [&]() {
- switch (entry.log_level) {
- case Level::Debug: return ANDROID_LOG_DEBUG;
- case Level::Info: return ANDROID_LOG_INFO;
- case Level::Warning: return ANDROID_LOG_WARN;
- case Level::Error: return ANDROID_LOG_ERROR;
- case Level::Critical: return ANDROID_LOG_FATAL;
- case Level::Count:
- case Level::Trace: return ANDROID_LOG_VERBOSE;
- }
- }();
- auto const str = FormatLogMessage(entry);
- __android_log_print(android_log_priority, "YuzuNative", "%s", str.c_str());
-#endif
-}
-} // namespace Common::Log
diff --git a/src/common/logging/text_formatter.h b/src/common/logging/text_formatter.h
deleted file mode 100644
index 8ce11240f2..0000000000
--- a/src/common/logging/text_formatter.h
+++ /dev/null
@@ -1,21 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// SPDX-FileCopyrightText: 2014 Citra Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <string>
-
-namespace Common::Log {
-
-struct Entry;
-
-/// Formats a log entry into the provided text buffer.
-std::string FormatLogMessage(const Entry& entry) noexcept;
-/// Prints the same message as `PrintMessage`, but colored according to the severity level.
-void PrintColoredMessage(const Entry& entry) noexcept;
-/// Formats and prints a log entry to the android logcat.
-void PrintMessageToLogcat(const Entry& entry) noexcept;
-} // namespace Common::Log
diff --git a/src/common/logging/types.h b/src/common/logging/types.h
deleted file mode 100644
index 08af50ee0c..0000000000
--- a/src/common/logging/types.h
+++ /dev/null
@@ -1,135 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include "common/common_types.h"
-
-namespace Common::Log {
-
-/// Specifies the severity or level of detail of the log message.
-enum class Level : u8 {
- Trace, ///< Extremely detailed and repetitive debugging information that is likely to
- ///< pollute logs.
- Debug, ///< Less detailed debugging information.
- Info, ///< Status information from important points during execution.
- Warning, ///< Minor or potential problems found during execution of a task.
- Error, ///< Major problems found during execution of a task that prevent it from being
- ///< completed.
- Critical, ///< Major problems during execution that threaten the stability of the entire
- ///< application.
-
- Count ///< Total number of logging levels
-};
-
-/**
- * Specifies the sub-system that generated the log message.
- *
- * @note If you add a new entry here, also add a corresponding one to `ALL_LOG_CLASSES` in
- * filter.cpp.
- */
-enum class Class : u8 {
- Log, ///< Messages about the log system itself
- Common, ///< Library routines
- Common_Filesystem, ///< Filesystem interface library
- Common_Memory, ///< Memory mapping and management functions
- Core, ///< LLE emulation core
- Core_ARM, ///< ARM CPU core
- Core_Timing, ///< CoreTiming functions
- Config, ///< Emulator configuration (including commandline)
- Debug, ///< Debugging tools
- Debug_Emulated, ///< Debug messages from the emulated programs
- Debug_GPU, ///< GPU debugging tools
- Debug_Breakpoint, ///< Logging breakpoints and watchpoints
- Debug_GDBStub, ///< GDB Stub
- Kernel, ///< The HLE implementation of the CTR kernel
- Kernel_SVC, ///< Kernel system calls
- Service, ///< HLE implementation of system services. Each major service
- ///< should have its own subclass.
- Service_ACC, ///< The ACC (Accounts) service
- Service_AM, ///< The AM (Applet manager) service
- Service_AOC, ///< The AOC (AddOn Content) service
- Service_APM, ///< The APM (Performance) service
- Service_ARP, ///< The ARP service
- Service_Audio, ///< The Audio (Audio control) service
- Service_BCAT, ///< The BCAT service
- Service_BGTC, ///< The BGTC (Background Task Controller) service
- Service_BPC, ///< The BPC service
- Service_BTDRV, ///< The Bluetooth driver service
- Service_BTM, ///< The BTM service
- Service_Capture, ///< The capture service
- Service_ERPT, ///< The error reporting service
- Service_ETicket, ///< The ETicket service
- Service_EUPLD, ///< The error upload service
- Service_Fatal, ///< The Fatal service
- Service_FGM, ///< The FGM service
- Service_Friend, ///< The friend service
- Service_FS, ///< The FS (Filesystem) service
- Service_GRC, ///< The game recording service
- Service_HID, ///< The HID (Human interface device) service
- Service_IRS, ///< The IRS service
- Service_JIT, ///< The JIT service
- Service_LBL, ///< The LBL (LCD backlight) service
- Service_LDN, ///< The LDN (Local domain network) service
- Service_LDR, ///< The loader service
- Service_LM, ///< The LM (Logger) service
- Service_Migration, ///< The migration service
- Service_Mii, ///< The Mii service
- Service_MM, ///< The MM (Multimedia) service
- Service_MNPP, ///< The MNPP service
- Service_NCM, ///< The NCM service
- Service_NFC, ///< The NFC (Near-field communication) service
- Service_NFP, ///< The NFP service
- Service_NGC, ///< The NGC (No Good Content) service
- Service_NIFM, ///< The NIFM (Network interface) service
- Service_NIM, ///< The NIM service
- Service_NOTIF, ///< The NOTIF (Notification) service
- Service_NPNS, ///< The NPNS service
- Service_NS, ///< The NS services
- Service_NVDRV, ///< The NVDRV (Nvidia driver) service
- Service_Nvnflinger, ///< The Nvnflinger service
- Service_OLSC, ///< The OLSC service
- Service_PCIE, ///< The PCIe service
- Service_PCTL, ///< The PCTL (Parental control) service
- Service_PCV, ///< The PCV service
- Service_PM, ///< The PM service
- Service_PREPO, ///< The PREPO (Play report) service
- Service_PSC, ///< The PSC service
- Service_PTM, ///< The PTM service
- Service_SET, ///< The SET (Settings) service
- Service_SM, ///< The SM (Service manager) service
- Service_SPL, ///< The SPL service
- Service_SSL, ///< The SSL service
- Service_TCAP, ///< The TCAP service.
- Service_Time, ///< The time service
- Service_USB, ///< The USB (Universal Serial Bus) service
- Service_VI, ///< The VI (Video interface) service
- Service_WLAN, ///< The WLAN (Wireless local area network) service
- HW, ///< Low-level hardware emulation
- HW_Memory, ///< Memory-map and address translation
- HW_LCD, ///< LCD register emulation
- HW_GPU, ///< GPU control emulation
- HW_AES, ///< AES engine emulation
- IPC, ///< IPC interface
- Frontend, ///< Emulator UI
- Render, ///< Emulator video output and hardware acceleration
- Render_Software, ///< Software renderer backend
- Render_OpenGL, ///< OpenGL backend
- Render_Vulkan, ///< Vulkan backend
- Shader, ///< Shader recompiler
- Shader_SPIRV, ///< Shader SPIR-V code generation
- Shader_GLASM, ///< Shader GLASM code generation
- Shader_GLSL, ///< Shader GLSL code generation
- Audio, ///< Audio emulation
- Audio_DSP, ///< The HLE implementation of the DSP
- Audio_Sink, ///< Emulator audio output backend
- Loader, ///< ROM loader
- CheatEngine, ///< Memory manipulation and engine VM functions
- Crypto, ///< Cryptographic engine/functions
- Input, ///< Input emulation
- Network, ///< Network emulation
- WebService, ///< Interface to yuzu Web Services
- Count ///< Total number of logging classes
-};
-
-} // namespace Common::Log
diff --git a/src/common/param_package.cpp b/src/common/param_package.cpp
index 629babb811..b2803a4fcf 100644
--- a/src/common/param_package.cpp
+++ b/src/common/param_package.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -6,7 +9,7 @@
#include <utility>
#include <vector>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/param_package.h"
#include "common/string_util.h"
diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index 4197c99663..f549169cd2 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -23,7 +23,7 @@
#include "common/assert.h"
#include "common/fs/fs_util.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/time_zone.h"
diff --git a/src/common/thread.cpp b/src/common/thread.cpp
index b0b63ae35c..f4bdb3f7c0 100644
--- a/src/common/thread.cpp
+++ b/src/common/thread.cpp
@@ -8,7 +8,7 @@
#include <thread>
#include "common/error.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/assert.h"
#include "common/thread.h"
#ifdef __APPLE__
diff --git a/src/common/time_zone.cpp b/src/common/time_zone.cpp
index f77df604f4..64f29251ca 100644
--- a/src/common/time_zone.cpp
+++ b/src/common/time_zone.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +13,7 @@
#include <fmt/chrono.h>
#include <fmt/core.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/time_zone.h"
namespace Common::TimeZone {
diff --git a/src/common/x64/cpu_detect.cpp b/src/common/x64/cpu_detect.cpp
index 780120a5b2..4cc42ccbd5 100644
--- a/src/common/x64/cpu_detect.cpp
+++ b/src/common/x64/cpu_detect.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-FileCopyrightText: Copyright 2013 Dolphin Emulator Project / 2015 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +15,7 @@
#include <vector>
#include "common/bit_util.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/x64/cpu_detect.h"
#include "common/x64/rdtsc.h"
diff --git a/src/core/arm/arm_interface.cpp b/src/core/arm/arm_interface.cpp
index 4f6bfb2bd1..b7de9fc0f8 100644
--- a/src/core/arm/arm_interface.cpp
+++ b/src/core/arm/arm_interface.cpp
@@ -1,9 +1,9 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/arm/arm_interface.h"
#include "core/arm/debug.h"
#include "core/core.h"
diff --git a/src/core/arm/dynarmic/dynarmic_cp15.cpp b/src/core/arm/dynarmic/dynarmic_cp15.cpp
index e3e2d8339d..7cb1d58398 100644
--- a/src/core/arm/dynarmic/dynarmic_cp15.cpp
+++ b/src/core/arm/dynarmic/dynarmic_cp15.cpp
@@ -1,11 +1,11 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <fmt/ranges.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/arm/dynarmic/arm_dynarmic_32.h"
#include "core/arm/dynarmic/dynarmic_cp15.h"
#include "core/core.h"
diff --git a/src/core/arm/nce/interpreter_visitor.h b/src/core/arm/nce/interpreter_visitor.h
index daae204310..131b69cd7d 100644
--- a/src/core/arm/nce/interpreter_visitor.h
+++ b/src/core/arm/nce/interpreter_visitor.h
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
@@ -14,7 +14,7 @@
#include "core/hle/kernel/k_thread.h"
#include "core/memory.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/arm/nce/visitor_base.h"
namespace Core {
diff --git a/src/core/arm/nce/patcher.h b/src/core/arm/nce/patcher.h
index 499c98c901..980a0c81e0 100644
--- a/src/core/arm/nce/patcher.h
+++ b/src/core/arm/nce/patcher.h
@@ -9,7 +9,7 @@
#include <oaknut/code_block.hpp>
#include <oaknut/oaknut.hpp>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/common_types.h"
#include "common/settings.h"
#include "core/hle/kernel/code_set.h"
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 9db4589ceb..2c8cbe21bb 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -9,7 +9,7 @@
#include "game_settings.h"
#include "audio_core/audio_core.h"
#include "common/fs/fs.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/settings_enums.h"
#include "common/string_util.h"
diff --git a/src/core/crypto/aes_util.cpp b/src/core/crypto/aes_util.cpp
index 55f436f532..34d66456ee 100644
--- a/src/core/crypto/aes_util.cpp
+++ b/src/core/crypto/aes_util.cpp
@@ -9,7 +9,7 @@
#include <openssl/err.h>
#include <openssl/evp.h>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/crypto/aes_util.h"
#include "core/crypto/key_manager.h"
diff --git a/src/core/crypto/key_manager.cpp b/src/core/crypto/key_manager.cpp
index fc0ee064cc..68692c178e 100644
--- a/src/core/crypto/key_manager.cpp
+++ b/src/core/crypto/key_manager.cpp
@@ -20,7 +20,7 @@
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/string_util.h"
#include "core/crypto/aes_util.h"
diff --git a/src/core/debugger/debugger.cpp b/src/core/debugger/debugger.cpp
index 1aada09e29..3f089b7f80 100644
--- a/src/core/debugger/debugger.cpp
+++ b/src/core/debugger/debugger.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
@@ -19,7 +19,7 @@
#include <boost/process/async_pipe.hpp>
#endif
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/polyfill_thread.h"
#include "common/thread.h"
#include "core/core.h"
diff --git a/src/core/debugger/gdbstub.cpp b/src/core/debugger/gdbstub.cpp
index a23ef2d65f..a5f49f6ff1 100644
--- a/src/core/debugger/gdbstub.cpp
+++ b/src/core/debugger/gdbstub.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
@@ -14,7 +14,7 @@
#include <boost/algorithm/string.hpp>
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "common/settings.h"
#include "common/string_util.h"
diff --git a/src/core/file_sys/card_image.cpp b/src/core/file_sys/card_image.cpp
index 0bcf40cf86..593c561689 100644
--- a/src/core/file_sys/card_image.cpp
+++ b/src/core/file_sys/card_image.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -6,7 +9,7 @@
#include <fmt/ostream.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/crypto/key_manager.h"
#include "core/file_sys/card_image.h"
#include "core/file_sys/content_archive.h"
diff --git a/src/core/file_sys/content_archive.cpp b/src/core/file_sys/content_archive.cpp
index 4e3313f83c..2b478d6b99 100644
--- a/src/core/file_sys/content_archive.cpp
+++ b/src/core/file_sys/content_archive.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -9,7 +9,7 @@
#include <optional>
#include <utility>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <ranges>
#include "core/crypto/aes_util.h"
#include "core/crypto/ctr_encryption_layer.h"
diff --git a/src/core/file_sys/ips_layer.cpp b/src/core/file_sys/ips_layer.cpp
index 57a9ce37d5..1dddd27909 100644
--- a/src/core/file_sys/ips_layer.cpp
+++ b/src/core/file_sys/ips_layer.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include <algorithm>
@@ -9,7 +9,7 @@
#include <utility>
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/swap.h"
#include "core/file_sys/ips_layer.h"
#include "core/file_sys/vfs/vfs_vector.h"
diff --git a/src/core/file_sys/nca_metadata.cpp b/src/core/file_sys/nca_metadata.cpp
index 324ecbc8c9..3937f39959 100644
--- a/src/core/file_sys/nca_metadata.cpp
+++ b/src/core/file_sys/nca_metadata.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -6,7 +6,7 @@
#include <cstring>
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/swap.h"
#include "core/file_sys/nca_metadata.h"
#include "core/file_sys/vfs/vfs.h"
diff --git a/src/core/file_sys/partition_filesystem.cpp b/src/core/file_sys/partition_filesystem.cpp
index 8ad2307cb5..5d88cd8d95 100644
--- a/src/core/file_sys/partition_filesystem.cpp
+++ b/src/core/file_sys/partition_filesystem.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +10,7 @@
#include <iterator>
#include <utility>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/file_sys/partition_filesystem.h"
#include "core/file_sys/vfs/vfs_offset.h"
#include "core/loader/loader.h"
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp
index 627646ee84..6af926eac0 100644
--- a/src/core/file_sys/patch_manager.cpp
+++ b/src/core/file_sys/patch_manager.cpp
@@ -10,7 +10,7 @@
#include <cstring>
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#ifndef _WIN32
#include "common/string_util.h"
diff --git a/src/core/file_sys/program_metadata.cpp b/src/core/file_sys/program_metadata.cpp
index f542a09d0e..4fc2e7ced3 100644
--- a/src/core/file_sys/program_metadata.cpp
+++ b/src/core/file_sys/program_metadata.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -7,7 +7,7 @@
#include <cstddef>
#include <vector>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "core/file_sys/program_metadata.h"
#include "core/file_sys/vfs/vfs.h"
diff --git a/src/core/file_sys/registered_cache.cpp b/src/core/file_sys/registered_cache.cpp
index 020d403c95..61671ea333 100644
--- a/src/core/file_sys/registered_cache.cpp
+++ b/src/core/file_sys/registered_cache.cpp
@@ -11,7 +11,7 @@
#include "common/assert.h"
#include "common/fs/path_util.h"
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/string_util.h"
#include "core/crypto/key_manager.h"
#include "core/file_sys/card_image.h"
diff --git a/src/core/file_sys/romfs_factory.cpp b/src/core/file_sys/romfs_factory.cpp
index 35e1499055..517872547c 100644
--- a/src/core/file_sys/romfs_factory.cpp
+++ b/src/core/file_sys/romfs_factory.cpp
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <memory>
#include "common/assert.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/file_sys/common_funcs.h"
#include "core/file_sys/content_archive.h"
#include "core/file_sys/nca_metadata.h"
diff --git a/src/core/file_sys/savedata_factory.cpp b/src/core/file_sys/savedata_factory.cpp
index 114a18891f..0ba839ec14 100644
--- a/src/core/file_sys/savedata_factory.cpp
+++ b/src/core/file_sys/savedata_factory.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -6,7 +6,7 @@
#include "common/assert.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/uuid.h"
#include "core/core.h"
#include "core/file_sys/savedata_factory.h"
diff --git a/src/core/file_sys/submission_package.cpp b/src/core/file_sys/submission_package.cpp
index 56286405e2..630bb0b079 100644
--- a/src/core/file_sys/submission_package.cpp
+++ b/src/core/file_sys/submission_package.cpp
@@ -10,7 +10,7 @@
#include <fmt/ostream.h>
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/crypto/key_manager.h"
#include "core/file_sys/content_archive.h"
#include "core/file_sys/nca_metadata.h"
diff --git a/src/core/file_sys/system_archive/system_archive.cpp b/src/core/file_sys/system_archive/system_archive.cpp
index b53eef877a..cb68d5b55e 100644
--- a/src/core/file_sys/system_archive/system_archive.cpp
+++ b/src/core/file_sys/system_archive/system_archive.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/file_sys/romfs.h"
#include "core/file_sys/system_archive/mii_model.h"
#include "core/file_sys/system_archive/ng_word.h"
diff --git a/src/core/file_sys/system_archive/system_version.cpp b/src/core/file_sys/system_archive/system_version.cpp
index 5662004b7a..c4ed91ce01 100644
--- a/src/core/file_sys/system_archive/system_version.cpp
+++ b/src/core/file_sys/system_archive/system_version.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/file_sys/system_archive/system_version.h"
#include "core/file_sys/vfs/vfs_vector.h"
#include "core/hle/api_version.h"
diff --git a/src/core/file_sys/vfs/vfs_real.cpp b/src/core/file_sys/vfs/vfs_real.cpp
index 2c3cb26907..1eafff6c06 100644
--- a/src/core/file_sys/vfs/vfs_real.cpp
+++ b/src/core/file_sys/vfs/vfs_real.cpp
@@ -12,7 +12,7 @@
#include "common/fs/file.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/file_sys/vfs/vfs.h"
#include "core/file_sys/vfs/vfs_real.h"
diff --git a/src/core/frontend/applets/cabinet.cpp b/src/core/frontend/applets/cabinet.cpp
index c33ce248b5..95ebdc6c4a 100644
--- a/src/core/frontend/applets/cabinet.cpp
+++ b/src/core/frontend/applets/cabinet.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/frontend/applets/cabinet.h"
#include <thread>
diff --git a/src/core/frontend/applets/controller.cpp b/src/core/frontend/applets/controller.cpp
index e04d884bab..c4292c5a12 100644
--- a/src/core/frontend/applets/controller.cpp
+++ b/src/core/frontend/applets/controller.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/settings_enums.h"
#include "core/frontend/applets/controller.h"
diff --git a/src/core/frontend/applets/error.cpp b/src/core/frontend/applets/error.cpp
index 53d4be2e54..ff45a13510 100644
--- a/src/core/frontend/applets/error.cpp
+++ b/src/core/frontend/applets/error.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/frontend/applets/error.h"
namespace Core::Frontend {
diff --git a/src/core/frontend/applets/general.cpp b/src/core/frontend/applets/general.cpp
index 4c299ee9c7..f70e0f28a9 100644
--- a/src/core/frontend/applets/general.cpp
+++ b/src/core/frontend/applets/general.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/frontend/applets/general.h"
namespace Core::Frontend {
diff --git a/src/core/frontend/applets/mii_edit.cpp b/src/core/frontend/applets/mii_edit.cpp
index 2988c3e720..3b52cd1c24 100644
--- a/src/core/frontend/applets/mii_edit.cpp
+++ b/src/core/frontend/applets/mii_edit.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/frontend/applets/mii_edit.h"
namespace Core::Frontend {
diff --git a/src/core/frontend/applets/net_connect.cpp b/src/core/frontend/applets/net_connect.cpp
index eba4a5cb2f..71bde3b4f4 100644
--- a/src/core/frontend/applets/net_connect.cpp
+++ b/src/core/frontend/applets/net_connect.cpp
@@ -1,7 +1,7 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/frontend/applets/net_connect.h"
namespace Core::Frontend {
diff --git a/src/core/frontend/applets/software_keyboard.cpp b/src/core/frontend/applets/software_keyboard.cpp
index bd0ec64f47..ad30fa8958 100644
--- a/src/core/frontend/applets/software_keyboard.cpp
+++ b/src/core/frontend/applets/software_keyboard.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <thread>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/string_util.h"
#include "core/frontend/applets/software_keyboard.h"
diff --git a/src/core/frontend/applets/web_browser.cpp b/src/core/frontend/applets/web_browser.cpp
index eca8d6d98d..361c2e397d 100644
--- a/src/core/frontend/applets/web_browser.cpp
+++ b/src/core/frontend/applets/web_browser.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/frontend/applets/web_browser.h"
namespace Core::Frontend {
diff --git a/src/core/game_settings.cpp b/src/core/game_settings.cpp
index da1530e026..745eae1908 100644
--- a/src/core/game_settings.cpp
+++ b/src/core/game_settings.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include "core/game_settings.h"
@@ -6,7 +6,7 @@
#include <algorithm>
#include <cctype>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "video_core/renderer_base.h"
diff --git a/src/core/hle/kernel/k_scheduler.cpp b/src/core/hle/kernel/k_scheduler.cpp
index 28d39320e4..4b76e18950 100644
--- a/src/core/hle/kernel/k_scheduler.cpp
+++ b/src/core/hle/kernel/k_scheduler.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
@@ -9,7 +9,7 @@
#include "common/assert.h"
#include "common/bit_util.h"
#include "common/fiber.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/arm/arm_interface.h"
#include "core/core.h"
#include "core/core_timing.h"
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp
index 40c3323ef3..4c91235ac9 100644
--- a/src/core/hle/kernel/k_server_session.cpp
+++ b/src/core/hle/kernel/k_server_session.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -6,7 +9,7 @@
#include "common/assert.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "common/scratch_buffer.h"
#include "core/core.h"
diff --git a/src/core/hle/kernel/k_thread.cpp b/src/core/hle/kernel/k_thread.cpp
index bfc8691e95..17bdb7b6fa 100644
--- a/src/core/hle/kernel/k_thread.cpp
+++ b/src/core/hle/kernel/k_thread.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
@@ -18,7 +18,7 @@
#include "common/common_funcs.h"
#include "common/common_types.h"
#include "common/fiber.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/cpu_manager.h"
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 5c2b6a4a88..129bda194a 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -14,7 +14,7 @@
#include <utility>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "common/thread.h"
#include "common/thread_worker.h"
diff --git a/src/core/hle/kernel/svc/svc_processor.cpp b/src/core/hle/kernel/svc/svc_processor.cpp
index 7602ce6c03..71fe91ad90 100644
--- a/src/core/hle/kernel/svc/svc_processor.cpp
+++ b/src/core/hle/kernel/svc/svc_processor.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/physical_core.h"
#include "core/hle/kernel/svc.h"
diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp
index b4d6e2ac30..d8767f9fed 100644
--- a/src/core/hle/service/acc/acc.cpp
+++ b/src/core/hle/service/acc/acc.cpp
@@ -10,7 +10,7 @@
#include "common/common_types.h"
#include "common/fs/file.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <ranges>
#include "common/stb.h"
#include "common/string_util.h"
diff --git a/src/core/hle/service/am/frontend/applet_cabinet.cpp b/src/core/hle/service/am/frontend/applet_cabinet.cpp
index 71fa2a0c17..24c249fcce 100644
--- a/src/core/hle/service/am/frontend/applet_cabinet.cpp
+++ b/src/core/hle/service/am/frontend/applet_cabinet.cpp
@@ -1,11 +1,11 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/frontend/applets/cabinet.h"
#include "core/hle/kernel/k_event.h"
diff --git a/src/core/hle/service/am/frontend/applet_controller.cpp b/src/core/hle/service/am/frontend/applet_controller.cpp
index cfa7cff707..2c4536e873 100644
--- a/src/core/hle/service/am/frontend/applet_controller.cpp
+++ b/src/core/hle/service/am/frontend/applet_controller.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
@@ -8,7 +8,7 @@
#include <cstring>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/string_util.h"
#include "core/core.h"
#include "core/frontend/applets/controller.h"
diff --git a/src/core/hle/service/am/frontend/applet_error.cpp b/src/core/hle/service/am/frontend/applet_error.cpp
index 1c530aa324..1a0786ea5a 100644
--- a/src/core/hle/service/am/frontend/applet_error.cpp
+++ b/src/core/hle/service/am/frontend/applet_error.cpp
@@ -7,7 +7,7 @@
#include <array>
#include <cstring>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/string_util.h"
#include "core/core.h"
#include "core/frontend/applets/error.h"
diff --git a/src/core/hle/service/am/frontend/applet_general.cpp b/src/core/hle/service/am/frontend/applet_general.cpp
index d2cabb7b59..5345fdec33 100644
--- a/src/core/hle/service/am/frontend/applet_general.cpp
+++ b/src/core/hle/service/am/frontend/applet_general.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/frontend/applets/general.h"
#include "core/hle/result.h"
diff --git a/src/core/hle/service/am/frontend/applet_mii_edit.cpp b/src/core/hle/service/am/frontend/applet_mii_edit.cpp
index 0180ab761a..7826021018 100644
--- a/src/core/hle/service/am/frontend/applet_mii_edit.cpp
+++ b/src/core/hle/service/am/frontend/applet_mii_edit.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/frontend/applets/mii_edit.h"
#include "core/hle/service/am/am.h"
diff --git a/src/core/hle/service/am/frontend/applet_net_connect.cpp b/src/core/hle/service/am/frontend/applet_net_connect.cpp
index 91ba664b7a..c963021ce4 100644
--- a/src/core/hle/service/am/frontend/applet_net_connect.cpp
+++ b/src/core/hle/service/am/frontend/applet_net_connect.cpp
@@ -1,9 +1,9 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include "common/assert.h"
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/frontend/applets/net_connect.h"
#include "core/hle/result.h"
diff --git a/src/core/hle/service/am/frontend/applet_web_browser.cpp b/src/core/hle/service/am/frontend/applet_web_browser.cpp
index 98e3b9c66d..92782c58e2 100644
--- a/src/core/hle/service/am/frontend/applet_web_browser.cpp
+++ b/src/core/hle/service/am/frontend/applet_web_browser.cpp
@@ -8,7 +8,7 @@
#include "common/fs/file.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/string_util.h"
#include "core/core.h"
diff --git a/src/core/hle/service/am/service/self_controller.cpp b/src/core/hle/service/am/service/self_controller.cpp
index 1b58cbea27..89e393bb97 100644
--- a/src/core/hle/service/am/service/self_controller.cpp
+++ b/src/core/hle/service/am/service/self_controller.cpp
@@ -1,10 +1,10 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/result.h"
#include "core/hle/service/am/am_results.h"
#include "core/hle/service/am/frontend/applets.h"
diff --git a/src/core/hle/service/aoc/addon_content_manager.cpp b/src/core/hle/service/aoc/addon_content_manager.cpp
index d47f57d645..4d3e640bb3 100644
--- a/src/core/hle/service/aoc/addon_content_manager.cpp
+++ b/src/core/hle/service/aoc/addon_content_manager.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -5,7 +8,7 @@
#include <numeric>
#include <vector>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/file_sys/common_funcs.h"
diff --git a/src/core/hle/service/apm/apm_controller.cpp b/src/core/hle/service/apm/apm_controller.cpp
index 4f1aa5cc27..2149af2c3c 100644
--- a/src/core/hle/service/apm/apm_controller.cpp
+++ b/src/core/hle/service/apm/apm_controller.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -5,7 +8,7 @@
#include <array>
#include <utility>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/settings_enums.h"
#include "core/core_timing.h"
diff --git a/src/core/hle/service/apm/apm_interface.cpp b/src/core/hle/service/apm/apm_interface.cpp
index d29051ee77..90241a7093 100644
--- a/src/core/hle/service/apm/apm_interface.cpp
+++ b/src/core/hle/service/apm/apm_interface.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/apm/apm.h"
#include "core/hle/service/apm/apm_controller.h"
#include "core/hle/service/apm/apm_interface.h"
diff --git a/src/core/hle/service/bcat/backend/backend.cpp b/src/core/hle/service/bcat/backend/backend.cpp
index 1993493a9e..491416254c 100644
--- a/src/core/hle/service/bcat/backend/backend.cpp
+++ b/src/core/hle/service/bcat/backend/backend.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/service/bcat/backend/backend.h"
diff --git a/src/core/hle/service/bcat/news/builtin_news.cpp b/src/core/hle/service/bcat/news/builtin_news.cpp
index 43b0445039..ed001b056b 100644
--- a/src/core/hle/service/bcat/news/builtin_news.cpp
+++ b/src/core/hle/service/bcat/news/builtin_news.cpp
@@ -7,7 +7,7 @@
#include "common/fs/file.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <boost/algorithm/string/replace.hpp>
#include <boost/regex.hpp>
diff --git a/src/core/hle/service/bcat/news/news_data_service.cpp b/src/core/hle/service/bcat/news/news_data_service.cpp
index c5d4b58881..200d00e785 100644
--- a/src/core/hle/service/bcat/news/news_data_service.cpp
+++ b/src/core/hle/service/bcat/news/news_data_service.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
@@ -9,7 +9,7 @@
#include "core/hle/service/bcat/news/news_storage.h"
#include "core/hle/service/cmif_serialization.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <cstring>
diff --git a/src/core/hle/service/btdrv/btdrv.cpp b/src/core/hle/service/btdrv/btdrv.cpp
index 83618a956b..256a722a84 100644
--- a/src/core/hle/service/btdrv/btdrv.cpp
+++ b/src/core/hle/service/btdrv/btdrv.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/service/btdrv/btdrv.h"
diff --git a/src/core/hle/service/btm/btm_system.cpp b/src/core/hle/service/btm/btm_system.cpp
index 99718a7b01..1684b0193e 100644
--- a/src/core/hle/service/btm/btm_system.cpp
+++ b/src/core/hle/service/btm/btm_system.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/btm/btm_system.h"
#include "core/hle/service/btm/btm_system_core.h"
#include "core/hle/service/cmif_serialization.h"
diff --git a/src/core/hle/service/btm/btm_system_core.cpp b/src/core/hle/service/btm/btm_system_core.cpp
index 4bc8a9e8ba..f1e623be16 100644
--- a/src/core/hle/service/btm/btm_system_core.cpp
+++ b/src/core/hle/service/btm/btm_system_core.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/btm/btm_system_core.h"
#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/set/system_settings_server.h"
diff --git a/src/core/hle/service/btm/btm_user.cpp b/src/core/hle/service/btm/btm_user.cpp
index d2e228f8d1..c380c573fa 100644
--- a/src/core/hle/service/btm/btm_user.cpp
+++ b/src/core/hle/service/btm/btm_user.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/btm/btm_user.h"
#include "core/hle/service/btm/btm_user_core.h"
#include "core/hle/service/cmif_serialization.h"
diff --git a/src/core/hle/service/btm/btm_user_core.cpp b/src/core/hle/service/btm/btm_user_core.cpp
index 6f9fa589b8..b120df14c0 100644
--- a/src/core/hle/service/btm/btm_user_core.cpp
+++ b/src/core/hle/service/btm/btm_user_core.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include <memory>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/service/btm/btm_user_core.h"
diff --git a/src/core/hle/service/caps/caps_a.cpp b/src/core/hle/service/caps/caps_a.cpp
index 72d3977081..2b365f6cd7 100644
--- a/src/core/hle/service/caps/caps_a.cpp
+++ b/src/core/hle/service/caps/caps_a.cpp
@@ -1,10 +1,10 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/caps/caps_a.h"
#include "core/hle/service/caps/caps_manager.h"
#include "core/hle/service/caps/caps_result.h"
diff --git a/src/core/hle/service/caps/caps_c.cpp b/src/core/hle/service/caps/caps_c.cpp
index 6993c04c2c..6c9f8e964d 100644
--- a/src/core/hle/service/caps/caps_c.cpp
+++ b/src/core/hle/service/caps/caps_c.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/caps/caps_c.h"
#include "core/hle/service/caps/caps_manager.h"
#include "core/hle/service/caps/caps_result.h"
diff --git a/src/core/hle/service/caps/caps_manager.cpp b/src/core/hle/service/caps/caps_manager.cpp
index 1825d345a6..af0b9b16ad 100644
--- a/src/core/hle/service/caps/caps_manager.cpp
+++ b/src/core/hle/service/caps/caps_manager.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
@@ -8,7 +8,7 @@
#include "common/fs/file.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/stb.h"
#include "core/core.h"
#include "core/hle/service/caps/caps_manager.h"
diff --git a/src/core/hle/service/caps/caps_ss.cpp b/src/core/hle/service/caps/caps_ss.cpp
index dfa7f1a840..0cd641f551 100644
--- a/src/core/hle/service/caps/caps_ss.cpp
+++ b/src/core/hle/service/caps/caps_ss.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/caps/caps_manager.h"
#include "core/hle/service/caps/caps_ss.h"
#include "core/hle/service/cmif_serialization.h"
diff --git a/src/core/hle/service/caps/caps_su.cpp b/src/core/hle/service/caps/caps_su.cpp
index 528f364f5f..8622ab058f 100644
--- a/src/core/hle/service/caps/caps_su.cpp
+++ b/src/core/hle/service/caps/caps_su.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/service/caps/caps_manager.h"
#include "core/hle/service/caps/caps_su.h"
diff --git a/src/core/hle/service/caps/caps_u.cpp b/src/core/hle/service/caps/caps_u.cpp
index 40d4d05fe5..6472b2bac6 100644
--- a/src/core/hle/service/caps/caps_u.cpp
+++ b/src/core/hle/service/caps/caps_u.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/caps/caps_manager.h"
#include "core/hle/service/caps/caps_types.h"
#include "core/hle/service/caps/caps_u.h"
diff --git a/src/core/hle/service/erpt/erpt.cpp b/src/core/hle/service/erpt/erpt.cpp
index 29db6594f4..014f1da62f 100644
--- a/src/core/hle/service/erpt/erpt.cpp
+++ b/src/core/hle/service/erpt/erpt.cpp
@@ -6,7 +6,7 @@
#include <memory>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/erpt/erpt.h"
#include "core/hle/service/server_manager.h"
diff --git a/src/core/hle/service/fatal/fatal.cpp b/src/core/hle/service/fatal/fatal.cpp
index 52199b0756..5b281a725a 100644
--- a/src/core/hle/service/fatal/fatal.cpp
+++ b/src/core/hle/service/fatal/fatal.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -8,7 +8,7 @@
#include <cstring>
#include <ctime>
#include <fmt/chrono.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scm_rev.h"
#include "common/swap.h"
#include "core/core.h"
diff --git a/src/core/hle/service/filesystem/filesystem.cpp b/src/core/hle/service/filesystem/filesystem.cpp
index 2031052409..c192fea454 100644
--- a/src/core/hle/service/filesystem/filesystem.cpp
+++ b/src/core/hle/service/filesystem/filesystem.cpp
@@ -9,7 +9,7 @@
#include "common/assert.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/file_sys/bis_factory.h"
diff --git a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp
index 0503be378c..0ee68c0332 100644
--- a/src/core/hle/service/filesystem/fsp/fsp_srv.cpp
+++ b/src/core/hle/service/filesystem/fsp/fsp_srv.cpp
@@ -14,7 +14,7 @@
#include "common/assert.h"
#include "common/common_types.h"
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/string_util.h"
#include "core/core.h"
diff --git a/src/core/hle/service/friend/friend.cpp b/src/core/hle/service/friend/friend.cpp
index 563c796c15..b851de8496 100644
--- a/src/core/hle/service/friend/friend.cpp
+++ b/src/core/hle/service/friend/friend.cpp
@@ -5,7 +5,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include <queue>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/uuid.h"
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
diff --git a/src/core/hle/service/glue/arp.cpp b/src/core/hle/service/glue/arp.cpp
index 1254b6d49c..a7f54e980c 100644
--- a/src/core/hle/service/glue/arp.cpp
+++ b/src/core/hle/service/glue/arp.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <memory>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_process.h"
#include "core/hle/kernel/kernel.h"
diff --git a/src/core/hle/service/glue/bgtc.cpp b/src/core/hle/service/glue/bgtc.cpp
index ae22ac4f79..5e51f98319 100644
--- a/src/core/hle/service/glue/bgtc.cpp
+++ b/src/core/hle/service/glue/bgtc.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/service/glue/bgtc.h"
#include "core/hle/service/ipc_helpers.h"
diff --git a/src/core/hle/service/glue/notif.cpp b/src/core/hle/service/glue/notif.cpp
index 3daec85210..49811bff4f 100644
--- a/src/core/hle/service/glue/notif.cpp
+++ b/src/core/hle/service/glue/notif.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
@@ -8,7 +8,7 @@
#include <cstring>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/glue/notif.h"
#include "core/hle/service/ipc_helpers.h"
diff --git a/src/core/hle/service/hid/active_vibration_device_list.cpp b/src/core/hle/service/hid/active_vibration_device_list.cpp
index c440f8382c..e0d6d3f2d9 100644
--- a/src/core/hle/service/hid/active_vibration_device_list.cpp
+++ b/src/core/hle/service/hid/active_vibration_device_list.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/hid/active_vibration_device_list.h"
#include "hid_core/hid_result.h"
diff --git a/src/core/hle/service/hid/applet_resource.cpp b/src/core/hle/service/hid/applet_resource.cpp
index 4c5df44be5..04d4d1b654 100644
--- a/src/core/hle/service/hid/applet_resource.cpp
+++ b/src/core/hle/service/hid/applet_resource.cpp
@@ -1,10 +1,10 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/kernel/k_shared_memory.h"
#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/hid/applet_resource.h"
diff --git a/src/core/hle/service/hid/hid_server.cpp b/src/core/hle/service/hid/hid_server.cpp
index b0c253cd00..f29cf4e3d7 100644
--- a/src/core/hle/service/hid/hid_server.cpp
+++ b/src/core/hle/service/hid/hid_server.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
@@ -7,7 +7,7 @@
#include <array>
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/hle/kernel/k_shared_memory.h"
#include "core/hle/kernel/k_transfer_memory.h"
diff --git a/src/core/hle/service/hid/hidbus.cpp b/src/core/hle/service/hid/hidbus.cpp
index 4fb002bc41..ebc66932ab 100644
--- a/src/core/hle/service/hid/hidbus.cpp
+++ b/src/core/hle/service/hid/hidbus.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/core_timing.h"
diff --git a/src/core/hle/service/hle_ipc.cpp b/src/core/hle/service/hle_ipc.cpp
index e0367e774c..8569d2bad8 100644
--- a/src/core/hle/service/hle_ipc.cpp
+++ b/src/core/hle/service/hle_ipc.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -10,7 +13,7 @@
#include "common/assert.h"
#include "common/common_funcs.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scratch_buffer.h"
#include "core/guest_memory.h"
#include "core/hle/kernel/k_auto_object.h"
diff --git a/src/core/hle/service/jit/jit_context.cpp b/src/core/hle/service/jit/jit_context.cpp
index a927318a7c..522d849e6f 100644
--- a/src/core/hle/service/jit/jit_context.cpp
+++ b/src/core/hle/service/jit/jit_context.cpp
@@ -16,7 +16,7 @@
#include "common/common_funcs.h"
#include "common/div_ceil.h"
#include "common/elf.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/jit/jit_context.h"
#include "core/memory.h"
diff --git a/src/core/hle/service/lbl/lbl.cpp b/src/core/hle/service/lbl/lbl.cpp
index c14b241428..68a9bff2df 100644
--- a/src/core/hle/service/lbl/lbl.cpp
+++ b/src/core/hle/service/lbl/lbl.cpp
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <cmath>
#include <memory>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/lbl/lbl.h"
#include "core/hle/service/server_manager.h"
diff --git a/src/core/hle/service/ldn/lan_discovery.h b/src/core/hle/service/ldn/lan_discovery.h
index d39197efff..fb24608ae1 100644
--- a/src/core/hle/service/ldn/lan_discovery.h
+++ b/src/core/hle/service/ldn/lan_discovery.h
@@ -17,7 +17,7 @@
#include <thread>
#include <ankerl/unordered_dense.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/socket_types.h"
#include "core/hle/result.h"
#include "core/hle/service/ldn/ldn_results.h"
diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp
index 0ff5ac0440..26f7e0fc32 100644
--- a/src/core/hle/service/lm/lm.cpp
+++ b/src/core/hle/service/lm/lm.cpp
@@ -9,7 +9,7 @@
#include <optional>
#include <ankerl/unordered_dense.h>
#include <boost/container_hash/hash.hpp>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/lm/lm.h"
diff --git a/src/core/hle/service/mii/mii.cpp b/src/core/hle/service/mii/mii.cpp
index adaaea571a..51df5bc628 100644
--- a/src/core/hle/service/mii/mii.cpp
+++ b/src/core/hle/service/mii/mii.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <memory>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/mii/mii.h"
diff --git a/src/core/hle/service/mii/mii_database_manager.cpp b/src/core/hle/service/mii/mii_database_manager.cpp
index a0291d4b55..606df7953d 100644
--- a/src/core/hle/service/mii/mii_database_manager.cpp
+++ b/src/core/hle/service/mii/mii_database_manager.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -5,7 +8,7 @@
#include "common/fs/file.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/string_util.h"
#include "core/hle/service/mii/mii_database_manager.h"
diff --git a/src/core/hle/service/mii/mii_manager.cpp b/src/core/hle/service/mii/mii_manager.cpp
index dcfd6b2e2a..ed37830797 100644
--- a/src/core/hle/service/mii/mii_manager.cpp
+++ b/src/core/hle/service/mii/mii_manager.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/mii/mii_database_manager.h"
#include "core/hle/service/mii/mii_manager.h"
#include "core/hle/service/mii/mii_result.h"
diff --git a/src/core/hle/service/mm/mm_u.cpp b/src/core/hle/service/mm/mm_u.cpp
index a5195da061..e5353ee42c 100644
--- a/src/core/hle/service/mm/mm_u.cpp
+++ b/src/core/hle/service/mm/mm_u.cpp
@@ -1,10 +1,10 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/mm/mm_u.h"
#include "core/hle/service/server_manager.h"
diff --git a/src/core/hle/service/mnpp/mnpp_app.cpp b/src/core/hle/service/mnpp/mnpp_app.cpp
index b11a920560..19bbfd795b 100644
--- a/src/core/hle/service/mnpp/mnpp_app.cpp
+++ b/src/core/hle/service/mnpp/mnpp_app.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/mnpp/mnpp_app.h"
#include "core/hle/service/server_manager.h"
diff --git a/src/core/hle/service/nfc/common/amiibo_crypto.cpp b/src/core/hle/service/nfc/common/amiibo_crypto.cpp
index 1a0f799679..bca1ce0cb5 100644
--- a/src/core/hle/service/nfc/common/amiibo_crypto.cpp
+++ b/src/core/hle/service/nfc/common/amiibo_crypto.cpp
@@ -15,7 +15,7 @@
#include "common/fs/file.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/nfc/common/amiibo_crypto.h"
namespace Service::NFP::AmiiboCrypto {
diff --git a/src/core/hle/service/nfc/common/device.cpp b/src/core/hle/service/nfc/common/device.cpp
index 98ed7b97bc..faa2b1f584 100644
--- a/src/core/hle/service/nfc/common/device.cpp
+++ b/src/core/hle/service/nfc/common/device.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
@@ -23,7 +23,7 @@
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
#include "common/input.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/string_util.h"
#include "common/tiny_mt.h"
#include "core/core.h"
diff --git a/src/core/hle/service/nfc/common/device_manager.cpp b/src/core/hle/service/nfc/common/device_manager.cpp
index 2dd3e9f892..a58b0f2aef 100644
--- a/src/core/hle/service/nfc/common/device_manager.cpp
+++ b/src/core/hle/service/nfc/common/device_manager.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include <algorithm>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/service/glue/time/static.h"
diff --git a/src/core/hle/service/nfc/nfc.cpp b/src/core/hle/service/nfc/nfc.cpp
index 9d4808dbec..6583cd2445 100644
--- a/src/core/hle/service/nfc/nfc.cpp
+++ b/src/core/hle/service/nfc/nfc.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <memory>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/nfc/nfc.h"
diff --git a/src/core/hle/service/nfc/nfc_interface.cpp b/src/core/hle/service/nfc/nfc_interface.cpp
index c28e55431e..35849bd6c4 100644
--- a/src/core/hle/service/nfc/nfc_interface.cpp
+++ b/src/core/hle/service/nfc/nfc_interface.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/service/ipc_helpers.h"
diff --git a/src/core/hle/service/nfp/nfp.cpp b/src/core/hle/service/nfp/nfp.cpp
index 2eeabc1387..604daabbe2 100644
--- a/src/core/hle/service/nfp/nfp.cpp
+++ b/src/core/hle/service/nfp/nfp.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/nfp/nfp.h"
#include "core/hle/service/nfp/nfp_interface.h"
diff --git a/src/core/hle/service/nfp/nfp_interface.cpp b/src/core/hle/service/nfp/nfp_interface.cpp
index 5ba6d17424..5bda6704e0 100644
--- a/src/core/hle/service/nfp/nfp_interface.cpp
+++ b/src/core/hle/service/nfp/nfp_interface.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/service/ipc_helpers.h"
diff --git a/src/core/hle/service/ns/platform_service_manager.cpp b/src/core/hle/service/ns/platform_service_manager.cpp
index e91e6451a8..bf93a2edfa 100644
--- a/src/core/hle/service/ns/platform_service_manager.cpp
+++ b/src/core/hle/service/ns/platform_service_manager.cpp
@@ -11,7 +11,7 @@
#include "common/assert.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/swap.h"
#include "core/core.h"
#include "core/file_sys/content_archive.h"
diff --git a/src/core/hle/service/ns/query_service.cpp b/src/core/hle/service/ns/query_service.cpp
index d4d5834f3f..ea605cb831 100644
--- a/src/core/hle/service/ns/query_service.cpp
+++ b/src/core/hle/service/ns/query_service.cpp
@@ -4,7 +4,7 @@
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/uuid.h"
#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/ns/query_service.h"
diff --git a/src/core/hle/service/nvdrv/core/nvmap.cpp b/src/core/hle/service/nvdrv/core/nvmap.cpp
index 453cb58319..a8c8f2f714 100644
--- a/src/core/hle/service/nvdrv/core/nvmap.cpp
+++ b/src/core/hle/service/nvdrv/core/nvmap.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: 2022 yuzu Emulator Project
// SPDX-FileCopyrightText: 2022 Skyline Team and Contributors
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -6,7 +9,7 @@
#include "common/alignment.h"
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/nvdrv/core/container.h"
#include "core/hle/service/nvdrv/core/heap_mapper.h"
#include "core/hle/service/nvdrv/core/nvmap.h"
diff --git a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp
index 995646e250..f26f5347eb 100644
--- a/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvdisp_disp0.cpp
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <boost/container/small_vector.hpp>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/core_timing.h"
#include "core/hle/service/nvdrv/core/container.h"
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
index 140c6eb6e3..6e1ff70f68 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2021 yuzu Emulator Project
@@ -10,7 +10,7 @@
#include "common/alignment.h"
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/service/nvdrv/core/container.h"
#include "core/hle/service/nvdrv/core/nvmap.h"
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp
index 7a035cd2c0..b2580f2bb9 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: 2021 yuzu Emulator Project
// SPDX-FileCopyrightText: 2021 Skyline Team and Contributors
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -8,7 +11,7 @@
#include <fmt/ranges.h>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
index d7a65ce445..ace1f7e8f7 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -6,7 +6,7 @@
#include <cstring>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/core_timing.h"
#include "core/hle/service/nvdrv/devices/ioctl_serialization.h"
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp
index aab4de39e4..5869bec903 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_gpu.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -6,7 +6,7 @@
#include <cstring>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_process.h"
#include "core/hle/service/nvdrv/core/container.h"
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp b/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp
index 60b89b6284..d64658bddc 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_nvdec.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "audio_core/audio_core.h"
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/service/nvdrv/core/container.h"
#include "core/hle/service/nvdrv/devices/ioctl_serialization.h"
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp b/src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp
index f7d6c33f77..c726d6f93e 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
@@ -9,7 +9,7 @@
#include "common/assert.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_process.h"
#include "core/hle/service/nvdrv/core/container.h"
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp b/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp
index f87d53f12c..90c68fdecf 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_nvjpg.cpp
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <cstring>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/nvdrv/devices/ioctl_serialization.h"
#include "core/hle/service/nvdrv/devices/nvhost_nvjpg.h"
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp b/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp
index 8219a2c7e8..07391824d0 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/service/nvdrv/core/container.h"
#include "core/hle/service/nvdrv/devices/ioctl_serialization.h"
diff --git a/src/core/hle/service/nvdrv/devices/nvmap.cpp b/src/core/hle/service/nvdrv/devices/nvmap.cpp
index b9131ee5ce..be3fab68b5 100644
--- a/src/core/hle/service/nvdrv/devices/nvmap.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvmap.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -10,7 +10,7 @@
#include "common/alignment.h"
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_page_table.h"
#include "core/hle/kernel/k_process.h"
diff --git a/src/core/hle/service/nvdrv/nvdrv_interface.cpp b/src/core/hle/service/nvdrv/nvdrv_interface.cpp
index db9467f4d1..15983ba881 100644
--- a/src/core/hle/service/nvdrv/nvdrv_interface.cpp
+++ b/src/core/hle/service/nvdrv/nvdrv_interface.cpp
@@ -1,11 +1,11 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2021 yuzu Emulator Project
// SPDX-FileCopyrightText: 2021 Skyline Team and Contributors
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "common/string_util.h"
#include "core/core.h"
diff --git a/src/core/hle/service/nvdrv/nvmemp.cpp b/src/core/hle/service/nvdrv/nvmemp.cpp
index fc10f6406f..a5477faf1a 100644
--- a/src/core/hle/service/nvdrv/nvmemp.cpp
+++ b/src/core/hle/service/nvdrv/nvmemp.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/nvdrv/nvmemp.h"
namespace Service::Nvidia {
diff --git a/src/core/hle/service/nvnflinger/buffer_item_consumer.cpp b/src/core/hle/service/nvnflinger/buffer_item_consumer.cpp
index 123507123e..4ad0e967ec 100644
--- a/src/core/hle/service/nvnflinger/buffer_item_consumer.cpp
+++ b/src/core/hle/service/nvnflinger/buffer_item_consumer.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-FileCopyrightText: Copyright 2012 The Android Open Source Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -5,7 +8,7 @@
// https://cs.android.com/android/platform/superproject/+/android-5.1.1_r38:frameworks/native/libs/gui/BufferItemConsumer.cpp
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/nvnflinger/buffer_item.h"
#include "core/hle/service/nvnflinger/buffer_item_consumer.h"
#include "core/hle/service/nvnflinger/buffer_queue_consumer.h"
diff --git a/src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp b/src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp
index c1bd58ee7e..1052dfa0ef 100644
--- a/src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp
+++ b/src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp
@@ -8,7 +8,7 @@
// https://cs.android.com/android/platform/superproject/+/android-5.1.1_r38:frameworks/native/libs/gui/BufferQueueConsumer.cpp
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/nvnflinger/buffer_item.h"
#include "core/hle/service/nvnflinger/buffer_queue_consumer.h"
#include "core/hle/service/nvnflinger/buffer_queue_core.h"
diff --git a/src/core/hle/service/nvnflinger/buffer_queue_producer.cpp b/src/core/hle/service/nvnflinger/buffer_queue_producer.cpp
index 2aae24ba4b..436b0f4b05 100644
--- a/src/core/hle/service/nvnflinger/buffer_queue_producer.cpp
+++ b/src/core/hle/service/nvnflinger/buffer_queue_producer.cpp
@@ -8,7 +8,7 @@
// https://cs.android.com/android/platform/superproject/+/android-5.1.1_r38:frameworks/native/libs/gui/BufferQueueProducer.cpp
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/kernel/k_readable_event.h"
diff --git a/src/core/hle/service/nvnflinger/consumer_base.cpp b/src/core/hle/service/nvnflinger/consumer_base.cpp
index e360ebfd8e..ee8edc88c4 100644
--- a/src/core/hle/service/nvnflinger/consumer_base.cpp
+++ b/src/core/hle/service/nvnflinger/consumer_base.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-FileCopyrightText: Copyright 2010 The Android Open Source Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -5,7 +8,7 @@
// https://cs.android.com/android/platform/superproject/+/android-5.1.1_r38:frameworks/native/libs/gui/ConsumerBase.cpp
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/nvnflinger/buffer_item.h"
#include "core/hle/service/nvnflinger/buffer_queue_consumer.h"
#include "core/hle/service/nvnflinger/buffer_queue_core.h"
diff --git a/src/core/hle/service/nvnflinger/hos_binder_driver_server.cpp b/src/core/hle/service/nvnflinger/hos_binder_driver_server.cpp
index 800372cd5c..1514c74d36 100644
--- a/src/core/hle/service/nvnflinger/hos_binder_driver_server.cpp
+++ b/src/core/hle/service/nvnflinger/hos_binder_driver_server.cpp
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include <mutex>
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/nvnflinger/hos_binder_driver_server.h"
namespace Service::Nvnflinger {
diff --git a/src/core/hle/service/prepo/prepo.cpp b/src/core/hle/service/prepo/prepo.cpp
index bfc5539903..02fa82047d 100644
--- a/src/core/hle/service/prepo/prepo.cpp
+++ b/src/core/hle/service/prepo/prepo.cpp
@@ -5,7 +5,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/uuid.h"
#include <cstring>
diff --git a/src/core/hle/service/ptm/psm.cpp b/src/core/hle/service/ptm/psm.cpp
index 013cce3579..f144b8e497 100644
--- a/src/core/hle/service/ptm/psm.cpp
+++ b/src/core/hle/service/ptm/psm.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -7,7 +7,7 @@
#include <memory>
#include "common/device_power_state.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/service/ipc_helpers.h"
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index 8b71a97320..e054ad441b 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -6,7 +6,7 @@
#include <fmt/ranges.h>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/hle/ipc.h"
diff --git a/src/core/hle/service/set/settings_server.cpp b/src/core/hle/service/set/settings_server.cpp
index f6080926a7..942dddc9bc 100644
--- a/src/core/hle/service/set/settings_server.cpp
+++ b/src/core/hle/service/set/settings_server.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -7,7 +7,7 @@
#include <algorithm>
#include <array>
#include <chrono>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/hle/service/cmif_serialization.h"
#include "core/hle/service/ipc_helpers.h"
diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp
index 87d6bf2a36..c7a83e69f4 100644
--- a/src/core/hle/service/set/system_settings_server.cpp
+++ b/src/core/hle/service/set/system_settings_server.cpp
@@ -10,7 +10,7 @@
#include "common/fs/file.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/string_util.h"
#include "core/core.h"
diff --git a/src/core/hle/service/sm/sm_controller.cpp b/src/core/hle/service/sm/sm_controller.cpp
index 6b7ea4d83d..00c88f6de1 100644
--- a/src/core/hle/service/sm/sm_controller.cpp
+++ b/src/core/hle/service/sm/sm_controller.cpp
@@ -1,11 +1,11 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_client_port.h"
#include "core/hle/kernel/k_port.h"
diff --git a/src/core/hle/service/sockets/sockets_translate.cpp b/src/core/hle/service/sockets/sockets_translate.cpp
index 9d82d347eb..ea12977f62 100644
--- a/src/core/hle/service/sockets/sockets_translate.cpp
+++ b/src/core/hle/service/sockets/sockets_translate.cpp
@@ -8,7 +8,7 @@
#include "common/assert.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/sockets/sockets.h"
#include "core/hle/service/sockets/sockets_translate.h"
#include "core/internal_network/network.h"
diff --git a/src/core/hle/service/spl/spl_module.cpp b/src/core/hle/service/spl/spl_module.cpp
index 9097b8454c..17c9f8a887 100644
--- a/src/core/hle/service/spl/spl_module.cpp
+++ b/src/core/hle/service/spl/spl_module.cpp
@@ -8,7 +8,7 @@
#include <cstdlib>
#include <ctime>
#include <vector>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/hle/api_version.h"
#include "core/hle/service/ipc_helpers.h"
diff --git a/src/core/hle/service/ssl/ssl_backend_none.cpp b/src/core/hle/service/ssl/ssl_backend_none.cpp
index a7fafd0a30..3a8474e093 100644
--- a/src/core/hle/service/ssl/ssl_backend_none.cpp
+++ b/src/core/hle/service/ssl/ssl_backend_none.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/ssl/ssl_backend.h"
diff --git a/src/core/hle/service/usb/usb.cpp b/src/core/hle/service/usb/usb.cpp
index f29fff1dd5..7f07cfef19 100644
--- a/src/core/hle/service/usb/usb.cpp
+++ b/src/core/hle/service/usb/usb.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <memory>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/hle/service/ipc_helpers.h"
#include "core/hle/service/server_manager.h"
#include "core/hle/service/service.h"
diff --git a/src/core/internal_network/emu_net_state.cpp b/src/core/internal_network/emu_net_state.cpp
index d6d1a70a60..bd92bf18f7 100644
--- a/src/core/internal_network/emu_net_state.cpp
+++ b/src/core/internal_network/emu_net_state.cpp
@@ -1,7 +1,7 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/internal_network/emu_net_state.h"
#include "core/internal_network/network.h"
#include "core/internal_network/network_interface.h"
diff --git a/src/core/internal_network/network.cpp b/src/core/internal_network/network.cpp
index f16da5a3d8..1b27934f69 100644
--- a/src/core/internal_network/network.cpp
+++ b/src/core/internal_network/network.cpp
@@ -29,7 +29,7 @@
#include "common/assert.h"
#include "common/common_types.h"
#include "common/expected.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/internal_network/network.h"
#include "core/internal_network/network_interface.h"
diff --git a/src/core/internal_network/network_interface.cpp b/src/core/internal_network/network_interface.cpp
index 48be1e2dc4..f68d4617eb 100644
--- a/src/core/internal_network/network_interface.cpp
+++ b/src/core/internal_network/network_interface.cpp
@@ -36,7 +36,7 @@
#endif
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/string_util.h"
#include "core/internal_network/emu_net_state.h"
diff --git a/src/core/internal_network/socket_proxy.cpp b/src/core/internal_network/socket_proxy.cpp
index f37fdc8795..744765bfcc 100644
--- a/src/core/internal_network/socket_proxy.cpp
+++ b/src/core/internal_network/socket_proxy.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +7,7 @@
#include <thread>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/zstd_compression.h"
#include "core/internal_network/network.h"
#include "core/internal_network/network_interface.h"
diff --git a/src/core/internal_network/wifi_scanner.cpp b/src/core/internal_network/wifi_scanner.cpp
index 1b97f69177..8c91f8b524 100644
--- a/src/core/internal_network/wifi_scanner.cpp
+++ b/src/core/internal_network/wifi_scanner.cpp
@@ -24,7 +24,7 @@
#include <net80211/ieee80211_ioctl.h>
#endif
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/internal_network/network_interface.h"
#include "core/internal_network/wifi_scanner.h"
diff --git a/src/core/launch_timestamp_cache.cpp b/src/core/launch_timestamp_cache.cpp
index 217b3f28da..c58ffa1d5e 100644
--- a/src/core/launch_timestamp_cache.cpp
+++ b/src/core/launch_timestamp_cache.cpp
@@ -16,7 +16,7 @@
#include "common/fs/fs.h"
#include "common/fs/file.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
namespace Core::LaunchTimestampCache {
namespace {
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp
index 1775569fa8..4e0b119f21 100644
--- a/src/core/loader/deconstructed_rom_directory.cpp
+++ b/src/core/loader/deconstructed_rom_directory.cpp
@@ -1,11 +1,11 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <cstring>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/file_sys/content_archive.h"
diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp
index b4d50227d3..69bfa2e879 100644
--- a/src/core/loader/loader.cpp
+++ b/src/core/loader/loader.cpp
@@ -12,7 +12,7 @@
#include <algorithm>
#include "common/concepts.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/string_util.h"
#include "core/core.h"
#include "core/file_sys/card_image.h"
diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp
index f5a77a726f..b429aa9e80 100644
--- a/src/core/loader/nro.cpp
+++ b/src/core/loader/nro.cpp
@@ -9,7 +9,7 @@
#include "common/common_funcs.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/swap.h"
#include "core/core.h"
diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp
index f62b1f4957..482c853542 100644
--- a/src/core/loader/nso.cpp
+++ b/src/core/loader/nso.cpp
@@ -11,7 +11,7 @@
#include "common/common_funcs.h"
#include "common/hex_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/lz4_compression.h"
#include "common/settings.h"
#include "common/swap.h"
diff --git a/src/core/memory.cpp b/src/core/memory.cpp
index 0ad360c3df..5c2c77e10a 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -18,7 +18,7 @@
#include "common/atomic_ops.h"
#include "common/common_types.h"
#include "common/heap_tracker.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/page_table.h"
#include "common/scope_exit.h"
#include "common/settings.h"
diff --git a/src/core/tools/freezer.cpp b/src/core/tools/freezer.cpp
index 9d42c726e4..73a86b3c8c 100644
--- a/src/core/tools/freezer.cpp
+++ b/src/core/tools/freezer.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/core_timing.h"
#include "core/memory.h"
diff --git a/src/dedicated_room/yuzu_room.cpp b/src/dedicated_room/yuzu_room.cpp
index 126053f43f..d5b8c36141 100644
--- a/src/dedicated_room/yuzu_room.cpp
+++ b/src/dedicated_room/yuzu_room.cpp
@@ -28,8 +28,7 @@
#include "common/fs/file.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/backend.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scm_rev.h"
#include "common/settings.h"
#include "common/string_util.h"
@@ -172,12 +171,6 @@ static void SaveBanList(const Network::Room::BanList& ban_list, const std::strin
}
}
-static void InitializeLogging(const std::string& log_file) {
- Common::Log::Initialize();
- Common::Log::SetColorConsoleBackendEnabled(true);
- Common::Log::Start();
-}
-
/// Application entry point
void LaunchRoom(int argc, char** argv, bool called_by_option)
{
@@ -225,7 +218,9 @@ void LaunchRoom(int argc, char** argv, bool called_by_option)
{0, 0, 0, 0},
};
- InitializeLogging(log_file);
+ Common::Log::Initialize();
+ Common::Log::SetColorConsoleBackendEnabled(true);
+ Common::Log::Start();
while (optind < argc) {
int arg = getopt_long(argc, argv, "n:d:s:p:m:w:g:u:t:a:i:l:hv", long_options, &option_index);
diff --git a/src/dynarmic/src/dynarmic/ir/microinstruction.h b/src/dynarmic/src/dynarmic/ir/microinstruction.h
index 843b4cdf18..1700eb110b 100644
--- a/src/dynarmic/src/dynarmic/ir/microinstruction.h
+++ b/src/dynarmic/src/dynarmic/ir/microinstruction.h
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
diff --git a/src/frontend_common/config.cpp b/src/frontend_common/config.cpp
index 1648a0e538..f275727c17 100644
--- a/src/frontend_common/config.cpp
+++ b/src/frontend_common/config.cpp
@@ -8,7 +8,7 @@
#include <array>
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/settings_common.h"
#include "common/settings_enums.h"
diff --git a/src/frontend_common/firmware_manager.cpp b/src/frontend_common/firmware_manager.cpp
index 6f3f409aa8..79af202ed8 100644
--- a/src/frontend_common/firmware_manager.cpp
+++ b/src/frontend_common/firmware_manager.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
#include "firmware_manager.h"
@@ -8,7 +8,7 @@
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/backend.h"
+#include "common/logging.h"
#include "core/crypto/key_manager.h"
#include "frontend_common/content_manager.h"
diff --git a/src/frontend_common/mod_manager.cpp b/src/frontend_common/mod_manager.cpp
index 2bf6c372d9..ddb196cf1a 100644
--- a/src/frontend_common/mod_manager.cpp
+++ b/src/frontend_common/mod_manager.cpp
@@ -6,7 +6,7 @@
#include <fmt/format.h>
#include "common/fs/fs.h"
#include "common/fs/fs_types.h"
-#include "common/logging/backend.h"
+#include "common/logging.h"
#include "frontend_common/data_manager.h"
#include "mod_manager.h"
diff --git a/src/frontend_common/play_time_manager.cpp b/src/frontend_common/play_time_manager.cpp
index 58b320198f..3315cd713e 100644
--- a/src/frontend_common/play_time_manager.cpp
+++ b/src/frontend_common/play_time_manager.cpp
@@ -7,7 +7,7 @@
#include "common/fs/file.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/thread.h"
#include "core/hle/service/acc/profile_manager.h"
diff --git a/src/frontend_common/update_checker.cpp b/src/frontend_common/update_checker.cpp
index 6b1fde720c..e14aadd757 100644
--- a/src/frontend_common/update_checker.cpp
+++ b/src/frontend_common/update_checker.cpp
@@ -9,7 +9,7 @@
#include <boost/algorithm/string/split.hpp>
#include <fmt/format.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scm_rev.h"
#include "update_checker.h"
diff --git a/src/hid_core/resource_manager.cpp b/src/hid_core/resource_manager.cpp
index 62fec03b1a..0c10d1bec9 100644
--- a/src/hid_core/resource_manager.cpp
+++ b/src/hid_core/resource_manager.cpp
@@ -1,7 +1,10 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/core_timing.h"
#include "core/hle/service/ipc_helpers.h"
diff --git a/src/hid_core/resources/npad/npad.cpp b/src/hid_core/resources/npad/npad.cpp
index a0f72ab298..9355a88c4b 100644
--- a/src/hid_core/resources/npad/npad.cpp
+++ b/src/hid_core/resources/npad/npad.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -11,7 +11,7 @@
#include "common/assert.h"
#include "common/bit_field.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core_timing.h"
#include "core/hle/kernel/k_event.h"
diff --git a/src/hid_core/resources/touch_screen/touch_screen_resource.cpp b/src/hid_core/resources/touch_screen/touch_screen_resource.cpp
index 5d45f861c6..5d77fe5719 100644
--- a/src/hid_core/resources/touch_screen/touch_screen_resource.cpp
+++ b/src/hid_core/resources/touch_screen/touch_screen_resource.cpp
@@ -1,10 +1,10 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core_timing.h"
#include "core/hle/kernel/k_event.h"
#include "core/hle/kernel/k_shared_memory.h"
diff --git a/src/input_common/drivers/gc_adapter.cpp b/src/input_common/drivers/gc_adapter.cpp
index 690779c6aa..25df839aa0 100644
--- a/src/input_common/drivers/gc_adapter.cpp
+++ b/src/input_common/drivers/gc_adapter.cpp
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: 2014 Dolphin Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <fmt/ranges.h>
#include <libusb.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/param_package.h"
#include "common/polyfill_thread.h"
#include "common/settings_input.h"
diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp
index 81b0a2313a..948f650fb1 100644
--- a/src/input_common/drivers/sdl_driver.cpp
+++ b/src/input_common/drivers/sdl_driver.cpp
@@ -3,7 +3,7 @@
// SPDX-FileCopyrightText: 2018 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/math_util.h"
#include "common/param_package.h"
#include "common/settings.h"
diff --git a/src/input_common/drivers/tas_input.cpp b/src/input_common/drivers/tas_input.cpp
index 5a7f858f16..32febc0839 100644
--- a/src/input_common/drivers/tas_input.cpp
+++ b/src/input_common/drivers/tas_input.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -8,7 +11,7 @@
#include "common/fs/file.h"
#include "common/fs/fs_types.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "input_common/drivers/tas_input.h"
diff --git a/src/input_common/drivers/udp_client.cpp b/src/input_common/drivers/udp_client.cpp
index 9e29d56cba..c930e19de3 100644
--- a/src/input_common/drivers/udp_client.cpp
+++ b/src/input_common/drivers/udp_client.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2018 Citra Emulator Project
@@ -9,7 +9,7 @@
#include <boost/asio.hpp>
#include <fmt/ranges.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/param_package.h"
#include "common/settings.h"
#include "input_common/drivers/udp_client.h"
diff --git a/src/input_common/drivers/virtual_amiibo.cpp b/src/input_common/drivers/virtual_amiibo.cpp
index a30b10b7b3..ccb740d158 100644
--- a/src/input_common/drivers/virtual_amiibo.cpp
+++ b/src/input_common/drivers/virtual_amiibo.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
@@ -7,7 +10,7 @@
#include "common/fs/file.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "input_common/drivers/virtual_amiibo.h"
diff --git a/src/input_common/helpers/joycon_driver.cpp b/src/input_common/helpers/joycon_driver.cpp
index 0dd1c958a2..78df802b73 100644
--- a/src/input_common/helpers/joycon_driver.cpp
+++ b/src/input_common/helpers/joycon_driver.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/input.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "common/swap.h"
#include "common/thread.h"
diff --git a/src/input_common/helpers/joycon_protocol/common_protocol.cpp b/src/input_common/helpers/joycon_protocol/common_protocol.cpp
index a6eecf9802..e825afa1b7 100644
--- a/src/input_common/helpers/joycon_protocol/common_protocol.cpp
+++ b/src/input_common/helpers/joycon_protocol/common_protocol.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/input.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/helpers/joycon_protocol/common_protocol.h"
namespace InputCommon::Joycon {
diff --git a/src/input_common/helpers/joycon_protocol/generic_functions.cpp b/src/input_common/helpers/joycon_protocol/generic_functions.cpp
index e9a056448c..623a7ac5c9 100644
--- a/src/input_common/helpers/joycon_protocol/generic_functions.cpp
+++ b/src/input_common/helpers/joycon_protocol/generic_functions.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/input.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/helpers/joycon_protocol/generic_functions.h"
namespace InputCommon::Joycon {
diff --git a/src/input_common/helpers/joycon_protocol/irs.cpp b/src/input_common/helpers/joycon_protocol/irs.cpp
index 5bf72114da..3f09d75338 100644
--- a/src/input_common/helpers/joycon_protocol/irs.cpp
+++ b/src/input_common/helpers/joycon_protocol/irs.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/input.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/helpers/joycon_protocol/irs.h"
namespace InputCommon::Joycon {
diff --git a/src/input_common/helpers/joycon_protocol/nfc.cpp b/src/input_common/helpers/joycon_protocol/nfc.cpp
index 67f789edd8..b71d0e8148 100644
--- a/src/input_common/helpers/joycon_protocol/nfc.cpp
+++ b/src/input_common/helpers/joycon_protocol/nfc.cpp
@@ -1,11 +1,11 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/input.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/helpers/joycon_protocol/nfc.h"
namespace InputCommon::Joycon {
diff --git a/src/input_common/helpers/joycon_protocol/poller.cpp b/src/input_common/helpers/joycon_protocol/poller.cpp
index abb0216473..2384981f50 100644
--- a/src/input_common/helpers/joycon_protocol/poller.cpp
+++ b/src/input_common/helpers/joycon_protocol/poller.cpp
@@ -1,10 +1,10 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/helpers/joycon_protocol/poller.h"
namespace InputCommon::Joycon {
diff --git a/src/input_common/helpers/joycon_protocol/ringcon.cpp b/src/input_common/helpers/joycon_protocol/ringcon.cpp
index 96414fb676..2a694a273f 100644
--- a/src/input_common/helpers/joycon_protocol/ringcon.cpp
+++ b/src/input_common/helpers/joycon_protocol/ringcon.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/input.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/helpers/joycon_protocol/ringcon.h"
namespace InputCommon::Joycon {
diff --git a/src/input_common/helpers/joycon_protocol/rumble.cpp b/src/input_common/helpers/joycon_protocol/rumble.cpp
index 62ad0fada0..2462167564 100644
--- a/src/input_common/helpers/joycon_protocol/rumble.cpp
+++ b/src/input_common/helpers/joycon_protocol/rumble.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
@@ -8,7 +8,7 @@
#include <cmath>
#include "common/input.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/helpers/joycon_protocol/rumble.h"
namespace InputCommon::Joycon {
diff --git a/src/input_common/helpers/udp_protocol.cpp b/src/input_common/helpers/udp_protocol.cpp
index e54a8fce1d..10ebf90410 100644
--- a/src/input_common/helpers/udp_protocol.cpp
+++ b/src/input_common/helpers/udp_protocol.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: 2018 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <cstddef>
#include <cstring>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/helpers/udp_protocol.h"
namespace InputCommon::CemuhookUDP {
diff --git a/src/input_common/input_engine.cpp b/src/input_common/input_engine.cpp
index 1e24b588e3..ccfe3444ae 100644
--- a/src/input_common/input_engine.cpp
+++ b/src/input_common/input_engine.cpp
@@ -1,9 +1,9 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/input_engine.h"
namespace InputCommon {
diff --git a/src/network/network.cpp b/src/network/network.cpp
index 7d04c2241e..4946fcf3dd 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -1,10 +1,10 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "enet/enet.h"
#include "network/network.h"
diff --git a/src/network/room.cpp b/src/network/room.cpp
index cf33763da2..7c257d2bd4 100644
--- a/src/network/room.cpp
+++ b/src/network/room.cpp
@@ -13,7 +13,7 @@
#include <sstream>
#include <thread>
#include "common/polyfill_thread.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "enet/enet.h"
#include "network/packet.h"
#include "network/room.h"
diff --git a/src/network/verify_user.h b/src/network/verify_user.h
index 6fc64d8a3e..36aef5a817 100644
--- a/src/network/verify_user.h
+++ b/src/network/verify_user.h
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <string>
-#include "common/logging/log.h"
+#include "common/logging.h"
namespace Network::VerifyUser {
diff --git a/src/qt_common/config/qt_config.cpp b/src/qt_common/config/qt_config.cpp
index 2ae03ae3b8..94a5cd5443 100644
--- a/src/qt_common/config/qt_config.cpp
+++ b/src/qt_common/config/qt_config.cpp
@@ -4,7 +4,7 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/main.h"
#include "qt_config.h"
#include "uisettings.h"
diff --git a/src/qt_common/gamemode.cpp b/src/qt_common/gamemode.cpp
index b6ce5c2ca8..b5fece244a 100644
--- a/src/qt_common/gamemode.cpp
+++ b/src/qt_common/gamemode.cpp
@@ -9,7 +9,7 @@
#ifdef __unix__
#include <gamemode_client.h>
#endif
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "qt_common/config/uisettings.h"
#include "qt_common/gamemode.h"
diff --git a/src/qt_common/qt_common.cpp b/src/qt_common/qt_common.cpp
index e886593780..3091171df8 100644
--- a/src/qt_common/qt_common.cpp
+++ b/src/qt_common/qt_common.cpp
@@ -6,7 +6,7 @@
#include <QGuiApplication>
#include <QStringLiteral>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/frontend/emu_window.h"
#include <QFile>
diff --git a/src/shader_recompiler/exception.h b/src/shader_recompiler/exception.h
index 322fce6579..b97b68a3b6 100644
--- a/src/shader_recompiler/exception.h
+++ b/src/shader_recompiler/exception.h
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +10,7 @@
#include <string>
#include <utility>
-#include "common/logging/formatter.h"
+#include "common/logging.h"
namespace Shader {
diff --git a/src/tests/common/param_package.cpp b/src/tests/common/param_package.cpp
index 41575def44..1840c73380 100644
--- a/src/tests/common/param_package.cpp
+++ b/src/tests/common/param_package.cpp
@@ -1,15 +1,17 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <catch2/catch_test_macros.hpp>
#include <math.h>
-#include "common/logging/backend.h"
+#include "common/logging.h"
#include "common/param_package.h"
namespace Common {
TEST_CASE("ParamPackage", "[common]") {
- Common::Log::DisableLoggingInTests();
ParamPackage original{
{"abc", "xyz"},
{"def", "42"},
diff --git a/src/video_core/engines/fermi_2d.cpp b/src/video_core/engines/fermi_2d.cpp
index 17fbe9961c..b442c5cc76 100644
--- a/src/video_core/engines/fermi_2d.cpp
+++ b/src/video_core/engines/fermi_2d.cpp
@@ -1,11 +1,11 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "video_core/engines/fermi_2d.h"
#include "video_core/engines/sw_blitter/blitter.h"
#include "video_core/memory_manager.h"
diff --git a/src/video_core/engines/kepler_compute.cpp b/src/video_core/engines/kepler_compute.cpp
index cd61ab222b..7b4efeb1e0 100644
--- a/src/video_core/engines/kepler_compute.cpp
+++ b/src/video_core/engines/kepler_compute.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <bitset>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "video_core/engines/kepler_compute.h"
#include "video_core/engines/maxwell_3d.h"
diff --git a/src/video_core/engines/kepler_memory.cpp b/src/video_core/engines/kepler_memory.cpp
index c026801a35..5d4c4720d3 100644
--- a/src/video_core/engines/kepler_memory.cpp
+++ b/src/video_core/engines/kepler_memory.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "video_core/engines/kepler_memory.h"
#include "video_core/engines/maxwell_3d.h"
diff --git a/src/video_core/engines/maxwell_dma.cpp b/src/video_core/engines/maxwell_dma.cpp
index 747759bf41..089d118a09 100644
--- a/src/video_core/engines/maxwell_dma.cpp
+++ b/src/video_core/engines/maxwell_dma.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -6,7 +6,7 @@
#include "common/algorithm.h"
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <ranges>
#include "common/settings.h"
#include "core/core.h"
diff --git a/src/video_core/engines/nv01_timer.h b/src/video_core/engines/nv01_timer.h
index a8e60f9f53..add9886f41 100644
--- a/src/video_core/engines/nv01_timer.h
+++ b/src/video_core/engines/nv01_timer.h
@@ -11,7 +11,7 @@
#include "common/bit_field.h"
#include "common/common_funcs.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "video_core/engines/engine_interface.h"
#include "video_core/engines/engine_upload.h"
diff --git a/src/video_core/engines/puller.cpp b/src/video_core/engines/puller.cpp
index b5b4e5d7fa..4030f93d49 100644
--- a/src/video_core/engines/puller.cpp
+++ b/src/video_core/engines/puller.cpp
@@ -5,7 +5,7 @@
// SPDX-License-Identifier: GPL-3.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "video_core/control/channel_state.h"
diff --git a/src/video_core/gpu_logging/freedreno_debug.cpp b/src/video_core/gpu_logging/freedreno_debug.cpp
index 14ffe04f78..8b65bd0cd5 100644
--- a/src/video_core/gpu_logging/freedreno_debug.cpp
+++ b/src/video_core/gpu_logging/freedreno_debug.cpp
@@ -4,7 +4,7 @@
#ifdef ANDROID
#include "video_core/gpu_logging/freedreno_debug.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <cstdlib>
diff --git a/src/video_core/gpu_logging/gpu_logging.cpp b/src/video_core/gpu_logging/gpu_logging.cpp
index 059e8a6c06..5f5e376e99 100644
--- a/src/video_core/gpu_logging/gpu_logging.cpp
+++ b/src/video_core/gpu_logging/gpu_logging.cpp
@@ -10,7 +10,7 @@
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
#include "common/literals.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
namespace GPU::Logging {
diff --git a/src/video_core/gpu_logging/qualcomm_debug.cpp b/src/video_core/gpu_logging/qualcomm_debug.cpp
index 4862bc2349..272b3e4de1 100644
--- a/src/video_core/gpu_logging/qualcomm_debug.cpp
+++ b/src/video_core/gpu_logging/qualcomm_debug.cpp
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: GPL-3.0-or-later
#include "video_core/gpu_logging/qualcomm_debug.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
namespace GPU::Logging::Qualcomm {
diff --git a/src/video_core/host1x/ffmpeg/ffmpeg.cpp b/src/video_core/host1x/ffmpeg/ffmpeg.cpp
index 011e6d45a0..486fd9365c 100644
--- a/src/video_core/host1x/ffmpeg/ffmpeg.cpp
+++ b/src/video_core/host1x/ffmpeg/ffmpeg.cpp
@@ -1,11 +1,11 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "common/settings.h"
#include "core/memory.h"
diff --git a/src/video_core/host1x/vic.cpp b/src/video_core/host1x/vic.cpp
index 02a9aa61e0..37972c045f 100644
--- a/src/video_core/host1x/vic.cpp
+++ b/src/video_core/host1x/vic.cpp
@@ -26,7 +26,7 @@ extern "C" {
#include "common/alignment.h"
#include "common/assert.h"
#include "common/bit_field.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/polyfill_thread.h"
#include "common/settings.h"
diff --git a/src/video_core/macro.cpp b/src/video_core/macro.cpp
index 0d1fe0a52b..66cea5afbd 100644
--- a/src/video_core/macro.cpp
+++ b/src/video_core/macro.cpp
@@ -38,7 +38,7 @@
#include "common/assert.h"
#include "common/bit_field.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#ifdef ARCHITECTURE_x86_64
#include "common/x64/xbyak_abi.h"
#include "common/x64/xbyak_util.h"
diff --git a/src/video_core/memory_manager.cpp b/src/video_core/memory_manager.cpp
index be97f5ab05..41806bfd29 100644
--- a/src/video_core/memory_manager.cpp
+++ b/src/video_core/memory_manager.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
@@ -8,7 +8,7 @@
#include "common/alignment.h"
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "core/hle/kernel/k_page_table.h"
#include "core/hle/kernel/k_process.h"
diff --git a/src/video_core/query_cache/query_cache.h b/src/video_core/query_cache/query_cache.h
index 3aeeb8dcab..4ed42487aa 100644
--- a/src/video_core/query_cache/query_cache.h
+++ b/src/video_core/query_cache/query_cache.h
@@ -15,7 +15,7 @@
#include "common/assert.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "common/settings.h"
#include "video_core/engines/maxwell_3d.h"
diff --git a/src/video_core/renderer_base.cpp b/src/video_core/renderer_base.cpp
index 4002fa72bb..9b6fb69af3 100644
--- a/src/video_core/renderer_base.cpp
+++ b/src/video_core/renderer_base.cpp
@@ -1,9 +1,12 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: 2015 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <thread>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/frontend/emu_window.h"
#include "core/frontend/graphics_context.h"
#include "video_core/renderer_base.h"
diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp
index b49568b77d..0829e6dd33 100644
--- a/src/video_core/renderer_opengl/gl_device.cpp
+++ b/src/video_core/renderer_opengl/gl_device.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
@@ -16,7 +16,7 @@
#include <glad/glad.h>
#include "common/literals.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <ranges>
#include "common/settings.h"
#include "shader_recompiler/stage.h"
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 602509bfdb..e268c4d2c6 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2015 Citra Emulator Project
@@ -14,7 +14,7 @@
#include <glad/glad.h>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/math_util.h"
#include "common/scope_exit.h"
#include "common/settings.h"
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.cpp b/src/video_core/renderer_opengl/gl_shader_cache.cpp
index 70a13d6a69..aac7732005 100644
--- a/src/video_core/renderer_opengl/gl_shader_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_cache.cpp
@@ -15,7 +15,7 @@
#include "common/assert.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/thread_worker.h"
#include "shader_recompiler/backend/glasm/emit_glasm.h"
diff --git a/src/video_core/renderer_opengl/gl_shader_util.cpp b/src/video_core/renderer_opengl/gl_shader_util.cpp
index a0d9d10ef0..bdebf4da47 100644
--- a/src/video_core/renderer_opengl/gl_shader_util.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_util.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -5,7 +8,7 @@
#include <vector>
#include <glad/glad.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "video_core/renderer_opengl/gl_shader_util.h"
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp
index 3412b1d998..1c72147113 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.cpp
+++ b/src/video_core/renderer_opengl/renderer_opengl.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
@@ -12,7 +12,7 @@
#include <glad/glad.h>
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core_timing.h"
#include "core/frontend/emu_window.h"
diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
index 024c72b38e..930f06daf6 100644
--- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
+++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
@@ -8,7 +8,7 @@
#include "common/assert.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "video_core/engines/maxwell_3d.h"
#include "video_core/renderer_vulkan/maxwell_to_vk.h"
diff --git a/src/video_core/renderer_vulkan/pipeline_statistics.cpp b/src/video_core/renderer_vulkan/pipeline_statistics.cpp
index 545971bd88..ad288436a8 100644
--- a/src/video_core/renderer_vulkan/pipeline_statistics.cpp
+++ b/src/video_core/renderer_vulkan/pipeline_statistics.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -6,7 +9,7 @@
#include <fmt/ranges.h>
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "video_core/renderer_vulkan/pipeline_statistics.h"
#include "video_core/vulkan_common/vulkan_device.h"
#include "video_core/vulkan_common/vulkan_wrapper.h"
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
index 1725bc8ccc..010cfd225d 100644
--- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp
+++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
@@ -14,7 +14,7 @@
#include <fmt/ranges.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <ranges>
#include "common/scope_exit.h"
#include "common/settings.h"
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index 60b899a811..f867980a6f 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -14,7 +14,7 @@
#include "video_core/renderer_vulkan/renderer_vulkan.h"
#include "common/assert.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "common/settings.h"
#include "video_core/buffer_cache/buffer_cache.h"
diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp
index cd8f948d8b..5d55cf551b 100644
--- a/src/video_core/renderer_vulkan/vk_swapchain.cpp
+++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp
@@ -9,7 +9,7 @@
#include <limits>
#include <vector>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/settings_enums.h"
#include "video_core/renderer_vulkan/vk_scheduler.h"
diff --git a/src/video_core/renderer_vulkan/vk_update_descriptor.cpp b/src/video_core/renderer_vulkan/vk_update_descriptor.cpp
index 0630ebda5e..aa7de7b632 100644
--- a/src/video_core/renderer_vulkan/vk_update_descriptor.cpp
+++ b/src/video_core/renderer_vulkan/vk_update_descriptor.cpp
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <variant>
#include <boost/container/static_vector.hpp>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "video_core/renderer_vulkan/vk_scheduler.h"
#include "video_core/renderer_vulkan/vk_update_descriptor.h"
#include "video_core/vulkan_common/vulkan_device.h"
diff --git a/src/video_core/shader_environment.cpp b/src/video_core/shader_environment.cpp
index 85cdb948f3..5f5633d4d1 100644
--- a/src/video_core/shader_environment.cpp
+++ b/src/video_core/shader_environment.cpp
@@ -17,7 +17,7 @@
#include "common/div_ceil.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <ranges>
#include "shader_recompiler/environment.h"
#include "video_core/engines/kepler_compute.h"
diff --git a/src/video_core/surface.h b/src/video_core/surface.h
index 8916510f83..a97bcb39b5 100644
--- a/src/video_core/surface.h
+++ b/src/video_core/surface.h
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -9,7 +9,7 @@
#include <utility>
#include "common/assert.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "video_core/gpu.h"
#include "video_core/textures/texture.h"
diff --git a/src/video_core/texture_cache/format_lookup_table.cpp b/src/video_core/texture_cache/format_lookup_table.cpp
index 8c774f512c..a9e03b375d 100644
--- a/src/video_core/texture_cache/format_lookup_table.cpp
+++ b/src/video_core/texture_cache/format_lookup_table.cpp
@@ -1,8 +1,11 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "video_core/texture_cache/format_lookup_table.h"
namespace VideoCommon {
diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp
index fd91ee1667..1ac7a0bc35 100644
--- a/src/video_core/video_core.cpp
+++ b/src/video_core/video_core.cpp
@@ -6,7 +6,7 @@
#include <memory>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/frontend/emu_window.h"
diff --git a/src/video_core/vulkan_common/nsight_aftermath_tracker.cpp b/src/video_core/vulkan_common/nsight_aftermath_tracker.cpp
index 9d57e3635f..3bfb7d4bdc 100644
--- a/src/video_core/vulkan_common/nsight_aftermath_tracker.cpp
+++ b/src/video_core/vulkan_common/nsight_aftermath_tracker.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -16,7 +19,7 @@
#include "common/fs/file.h"
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scope_exit.h"
#include "video_core/vulkan_common/nsight_aftermath_tracker.h"
diff --git a/src/video_core/vulkan_common/vulkan_debug_callback.cpp b/src/video_core/vulkan_common/vulkan_debug_callback.cpp
index cd6653c86e..d1bd009c8f 100644
--- a/src/video_core/vulkan_common/vulkan_debug_callback.cpp
+++ b/src/video_core/vulkan_common/vulkan_debug_callback.cpp
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: GPL-3.0-or-later
#include <string_view>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "video_core/vulkan_common/vulkan_debug_callback.h"
#include "video_core/gpu_logging/gpu_logging.h"
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h
index d29a8cd3f3..fa0c358069 100644
--- a/src/video_core/vulkan_common/vulkan_device.h
+++ b/src/video_core/vulkan_common/vulkan_device.h
@@ -14,7 +14,7 @@
#include <vector>
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "video_core/vulkan_common/vulkan_wrapper.h"
diff --git a/src/video_core/vulkan_common/vulkan_instance.cpp b/src/video_core/vulkan_common/vulkan_instance.cpp
index 47e18dd6a5..b1a53ab4f3 100644
--- a/src/video_core/vulkan_common/vulkan_instance.cpp
+++ b/src/video_core/vulkan_common/vulkan_instance.cpp
@@ -12,7 +12,7 @@
#include "common/common_types.h"
#include "common/dynamic_library.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <ranges>
#include <vulkan/vulkan_core.h>
#include "core/frontend/emu_window.h"
diff --git a/src/video_core/vulkan_common/vulkan_library.cpp b/src/video_core/vulkan_common/vulkan_library.cpp
index 0130f6a0d9..271b622e65 100644
--- a/src/video_core/vulkan_common/vulkan_library.cpp
+++ b/src/video_core/vulkan_common/vulkan_library.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -5,7 +8,7 @@
#include "common/dynamic_library.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "video_core/vulkan_common/vulkan_library.h"
namespace Vulkan {
diff --git a/src/video_core/vulkan_common/vulkan_memory_allocator.cpp b/src/video_core/vulkan_common/vulkan_memory_allocator.cpp
index ab93f256c0..9c7cd8a61f 100644
--- a/src/video_core/vulkan_common/vulkan_memory_allocator.cpp
+++ b/src/video_core/vulkan_common/vulkan_memory_allocator.cpp
@@ -16,7 +16,7 @@
#include "common/assert.h"
#include "common/common_types.h"
#include "common/literals.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include <ranges>
#include "video_core/vulkan_common/vma.h"
#include "video_core/vulkan_common/vulkan_device.h"
diff --git a/src/video_core/vulkan_common/vulkan_surface.cpp b/src/video_core/vulkan_common/vulkan_surface.cpp
index 761b7759c8..8b9dcb4d42 100644
--- a/src/video_core/vulkan_common/vulkan_surface.cpp
+++ b/src/video_core/vulkan_common/vulkan_surface.cpp
@@ -4,7 +4,7 @@
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/frontend/emu_window.h"
#include "video_core/vulkan_common/vulkan_surface.h"
#include "video_core/vulkan_common/vulkan_wrapper.h"
diff --git a/src/video_core/vulkan_common/vulkan_wrapper.cpp b/src/video_core/vulkan_common/vulkan_wrapper.cpp
index 926f48de89..a2fa2b50c6 100644
--- a/src/video_core/vulkan_common/vulkan_wrapper.cpp
+++ b/src/video_core/vulkan_common/vulkan_wrapper.cpp
@@ -11,7 +11,7 @@
#include <vector>
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "video_core/vulkan_common/vk_enum_string_helper.h"
#include "video_core/vulkan_common/vma.h"
#include "video_core/vulkan_common/vulkan_wrapper.h"
diff --git a/src/web_service/announce_room_json.cpp b/src/web_service/announce_room_json.cpp
index f1020a5b88..b80caa49dc 100644
--- a/src/web_service/announce_room_json.cpp
+++ b/src/web_service/announce_room_json.cpp
@@ -1,10 +1,13 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <future>
#include <nlohmann/json.hpp>
#include "common/detached_tasks.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "web_service/announce_room_json.h"
#include "web_service/web_backend.h"
diff --git a/src/web_service/verify_user_jwt.cpp b/src/web_service/verify_user_jwt.cpp
index f88f676206..f9b310e235 100644
--- a/src/web_service/verify_user_jwt.cpp
+++ b/src/web_service/verify_user_jwt.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -12,7 +15,7 @@
#endif
#include <system_error>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "web_service/verify_user_jwt.h"
#include "web_service/web_backend.h"
#include "web_service/web_result.h"
diff --git a/src/web_service/web_backend.cpp b/src/web_service/web_backend.cpp
index 1dfe6039da..60b11fff5a 100644
--- a/src/web_service/web_backend.cpp
+++ b/src/web_service/web_backend.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2017 Citra Emulator Project
@@ -25,7 +25,7 @@
#include <openssl/cert.h>
#endif
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "web_service/web_backend.h"
#include "web_service/web_result.h"
diff --git a/src/yuzu/applets/qt_software_keyboard.cpp b/src/yuzu/applets/qt_software_keyboard.cpp
index 41f0b85e96..aa77e082bd 100644
--- a/src/yuzu/applets/qt_software_keyboard.cpp
+++ b/src/yuzu/applets/qt_software_keyboard.cpp
@@ -7,7 +7,7 @@
#include <QKeyEvent>
#include <QScreen>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/string_util.h"
#include "core/core.h"
diff --git a/src/yuzu/applets/qt_web_browser.cpp b/src/yuzu/applets/qt_web_browser.cpp
index e7c50aa3fb..4bbe789d34 100644
--- a/src/yuzu/applets/qt_web_browser.cpp
+++ b/src/yuzu/applets/qt_web_browser.cpp
@@ -7,7 +7,7 @@
#include <QDesktopServices>
#include <QUrl>
-#include "common/logging/log.h"
+#include "common/logging.h"
#ifdef YUZU_USE_QT_WEB_ENGINE
#include <bit>
diff --git a/src/yuzu/bootmanager.h b/src/yuzu/bootmanager.h
index 837156a725..e763cd9868 100644
--- a/src/yuzu/bootmanager.h
+++ b/src/yuzu/bootmanager.h
@@ -27,7 +27,7 @@
#include <qobjectdefs.h>
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/polyfill_thread.h"
#include "common/thread.h"
#include "core/frontend/emu_window.h"
diff --git a/src/yuzu/compatdb.cpp b/src/yuzu/compatdb.cpp
index 6d5d263e16..b47cdd2116 100644
--- a/src/yuzu/compatdb.cpp
+++ b/src/yuzu/compatdb.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2017 Citra Emulator Project
@@ -8,7 +8,7 @@
#include <QMessageBox>
#include <QPushButton>
#include <qtconcurrentrun.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "ui_compatdb.h"
#include "yuzu/compatdb.h"
diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp
index 287bfbb338..fadaf1c01a 100644
--- a/src/yuzu/configuration/configure_debug.cpp
+++ b/src/yuzu/configuration/configure_debug.cpp
@@ -8,8 +8,7 @@
#include <QMessageBox>
#include <QUrl>
#include "common/fs/path_util.h"
-#include "common/logging/backend.h"
-#include "common/logging/filter.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/crypto/key_manager.h"
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp
index 2e3107d3dc..d4a16e9f73 100644
--- a/src/yuzu/configuration/configure_dialog.cpp
+++ b/src/yuzu/configuration/configure_dialog.cpp
@@ -5,7 +5,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include <memory>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/settings_enums.h"
#include "core/core.h"
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp
index 475b9b60ac..54835aea5a 100644
--- a/src/yuzu/configuration/configure_graphics.cpp
+++ b/src/yuzu/configuration/configure_graphics.cpp
@@ -35,7 +35,7 @@
#include "common/common_types.h"
#include "common/dynamic_library.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/settings_enums.h"
#include "core/core.h"
diff --git a/src/yuzu/configuration/configure_motion_touch.cpp b/src/yuzu/configuration/configure_motion_touch.cpp
index 79a367258f..d1bcac12aa 100644
--- a/src/yuzu/configuration/configure_motion_touch.cpp
+++ b/src/yuzu/configuration/configure_motion_touch.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2018 Citra Emulator Project
@@ -10,7 +10,7 @@
#include <QMessageBox>
#include <QStringListModel>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "input_common/drivers/udp_client.h"
#include "input_common/helpers/udp_protocol.h"
diff --git a/src/yuzu/configuration/input_profiles.cpp b/src/yuzu/configuration/input_profiles.cpp
index df80be8252..952b5ab7b0 100644
--- a/src/yuzu/configuration/input_profiles.cpp
+++ b/src/yuzu/configuration/input_profiles.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -5,7 +8,7 @@
#include "common/fs/fs.h"
#include "common/fs/path_util.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "frontend_common/config.h"
#include "yuzu/configuration/input_profiles.h"
diff --git a/src/yuzu/configuration/shared_widget.cpp b/src/yuzu/configuration/shared_widget.cpp
index 3b425e7200..ce11763f91 100644
--- a/src/yuzu/configuration/shared_widget.cpp
+++ b/src/yuzu/configuration/shared_widget.cpp
@@ -42,7 +42,7 @@
#include "common/assert.h"
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "common/settings_common.h"
#include "qt_common/config/shared_translation.h"
diff --git a/src/yuzu/debugger/console.cpp b/src/yuzu/debugger/console.cpp
index 44d4e1db7b..8965c7a08f 100644
--- a/src/yuzu/debugger/console.cpp
+++ b/src/yuzu/debugger/console.cpp
@@ -10,7 +10,8 @@
#include <wincon.h>
#endif
-#include "common/logging/backend.h"
+#include "common/logging.h"
+#include "yuzu/debugger/console.h"
#include "qt_common/config/uisettings.h"
#include "yuzu/debugger/console.h"
diff --git a/src/yuzu/game/game_list.cpp b/src/yuzu/game/game_list.cpp
index 344cff445c..0e2b6cf7e6 100644
--- a/src/yuzu/game/game_list.cpp
+++ b/src/yuzu/game/game_list.cpp
@@ -21,7 +21,7 @@
#include <fmt/ranges.h>
#include <qnamespace.h>
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/file_sys/patch_manager.h"
diff --git a/src/yuzu/game/game_list_p.h b/src/yuzu/game/game_list_p.h
index 004f8917ad..f9d714fb8b 100644
--- a/src/yuzu/game/game_list_p.h
+++ b/src/yuzu/game/game_list_p.h
@@ -20,7 +20,7 @@
#include <QWidget>
#include "common/common_types.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/string_util.h"
#include "frontend_common/play_time_manager.h"
#include "qt_common/config/uisettings.h"
diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp
index c0f757f697..2e7cef0953 100644
--- a/src/yuzu/main_window.cpp
+++ b/src/yuzu/main_window.cpp
@@ -112,7 +112,7 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
// Common //
#include "common/fs/fs.h"
-#include "common/logging/backend.h"
+#include "common/logging.h"
#include "common/memory_detect.h"
#include "common/scm_rev.h"
#include "common/scope_exit.h"
diff --git a/src/yuzu/multiplayer/chat_room.cpp b/src/yuzu/multiplayer/chat_room.cpp
index a4d343f3a3..e274aaf62d 100644
--- a/src/yuzu/multiplayer/chat_room.cpp
+++ b/src/yuzu/multiplayer/chat_room.cpp
@@ -17,7 +17,7 @@
#include <QTime>
#include <QUrl>
#include <QtConcurrentRun>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "network/announce_multiplayer_session.h"
#include "ui_chat_room.h"
#include "yuzu/game/game_list_p.h"
diff --git a/src/yuzu/multiplayer/client_room.cpp b/src/yuzu/multiplayer/client_room.cpp
index 2d6bcd3bad..391ca56c05 100644
--- a/src/yuzu/multiplayer/client_room.cpp
+++ b/src/yuzu/multiplayer/client_room.cpp
@@ -11,7 +11,7 @@
#include <QMetaType>
#include <QTime>
#include <QtConcurrentRun>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "network/announce_multiplayer_session.h"
#include "ui_client_room.h"
#include "yuzu/game/game_list_p.h"
diff --git a/src/yuzu/multiplayer/host_room.cpp b/src/yuzu/multiplayer/host_room.cpp
index 65afcc3b7c..2a5530e02c 100644
--- a/src/yuzu/multiplayer/host_room.cpp
+++ b/src/yuzu/multiplayer/host_room.cpp
@@ -13,7 +13,7 @@
#include <QMetaType>
#include <QTime>
#include <QtConcurrentRun>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/internal_network/network_interface.h"
diff --git a/src/yuzu/multiplayer/lobby.cpp b/src/yuzu/multiplayer/lobby.cpp
index 8c435af8b6..8e9ff6563f 100644
--- a/src/yuzu/multiplayer/lobby.cpp
+++ b/src/yuzu/multiplayer/lobby.cpp
@@ -7,7 +7,7 @@
#include <QInputDialog>
#include <QList>
#include <QtConcurrentRun>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/settings.h"
#include "core/core.h"
#include "core/hle/service/acc/profile_manager.h"
diff --git a/src/yuzu/multiplayer/state.cpp b/src/yuzu/multiplayer/state.cpp
index b5f2326b44..f682c299c8 100644
--- a/src/yuzu/multiplayer/state.cpp
+++ b/src/yuzu/multiplayer/state.cpp
@@ -9,7 +9,7 @@
#include <QMessageBox>
#include <QStandardItemModel>
#include "common/announce_multiplayer_room.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/core.h"
#include "qt_common/config/uisettings.h"
#include "yuzu/game/game_list.h"
diff --git a/src/yuzu/util/util.cpp b/src/yuzu/util/util.cpp
index 3e9ebc2ad2..a3933d9b63 100644
--- a/src/yuzu/util/util.cpp
+++ b/src/yuzu/util/util.cpp
@@ -8,7 +8,7 @@
#include <QPainter>
#include "applets/qt_profile_select.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "core/frontend/applets/profile_select.h"
#include "core/hle/service/acc/profile_manager.h"
#include "frontend_common/data_manager.h"
diff --git a/src/yuzu/vk_device_info.cpp b/src/yuzu/vk_device_info.cpp
index 53dacdc090..1e8e140d77 100644
--- a/src/yuzu/vk_device_info.cpp
+++ b/src/yuzu/vk_device_info.cpp
@@ -10,7 +10,7 @@
#include "qt_common/qt_common.h"
#include "common/dynamic_library.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "video_core/vulkan_common/vulkan_device.h"
#include "video_core/vulkan_common/vulkan_instance.h"
#include "video_core/vulkan_common/vulkan_library.h"
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp
index 4b56f3794b..c00734216e 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2.cpp
@@ -1,11 +1,11 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2016 Citra Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#include <SDL.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scm_rev.h"
#include "common/settings.h"
#include "core/core.h"
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp
index 32f365e0d0..94a6a69776 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp
@@ -1,4 +1,4 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
@@ -13,7 +13,7 @@
#include <fmt/ranges.h>
#include <glad/glad.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scm_rev.h"
#include "common/settings.h"
#include "common/string_util.h"
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_null.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_null.cpp
index 506137bd8a..4947080313 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2_null.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_null.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +10,7 @@
#include <fmt/ranges.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scm_rev.h"
#include "video_core/renderer_null/renderer_null.h"
#include "yuzu_cmd/emu_window/emu_window_sdl2_null.h"
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
index f509652bf6..c54e5b4fda 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_vk.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -7,7 +10,7 @@
#include <fmt/ranges.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scm_rev.h"
#include "video_core/renderer_vulkan/renderer_vulkan.h"
#include "yuzu_cmd/emu_window/emu_window_sdl2_vk.h"
diff --git a/src/yuzu_cmd/sdl_config.cpp b/src/yuzu_cmd/sdl_config.cpp
index 6e0f254b6b..136043dc9e 100644
--- a/src/yuzu_cmd/sdl_config.cpp
+++ b/src/yuzu_cmd/sdl_config.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
@@ -5,7 +8,7 @@
#define SDL_MAIN_HANDLED
#include <SDL.h>
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "input_common/main.h"
#include "sdl_config.h"
diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp
index 8124c91ea1..8e518d816c 100644
--- a/src/yuzu_cmd/yuzu.cpp
+++ b/src/yuzu_cmd/yuzu.cpp
@@ -12,8 +12,7 @@
#include <fmt/ostream.h>
#include "common/detached_tasks.h"
-#include "common/logging/backend.h"
-#include "common/logging/log.h"
+#include "common/logging.h"
#include "common/scm_rev.h"
#include "common/settings.h"
#include "common/string_util.h"