summaryrefslogtreecommitdiffstats
path: root/src/common/logging/backend.cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-11-02 Refactor Logging ImplLevi Behunin1-27/+37
Loop on stop_token and remove final_entry in Entry. Move Backend thread out of Impl Constructor to its own function. Add Start function for backend thread. Use stop token in PopWait and check if entry filename is nullptr before logging.
2021-10-02common/logging: Move Log::Entry declaration to a separate headerameerj1-0/+3
This reduces the load of requiring to include std::chrono in all files which include log.h
2021-09-02common/logging: Add missing includegerman771-0/+1
2021-08-27Revert "logging: Display backtrace on crash"Morph1-111/+1
2021-08-24logging: Fix log filter during initializationameerj1-4/+5
The log filter was being ignored on initialization due to the logging instance being initialized before the config instance, so the log filter was set to its default value. This fixes that oversight, along with using descriptive exceptions instead of abort() calls.
2021-08-13logging: Display backtrace on crashyzct123451-1/+111
This implements backtraces so we don't have to tell users how to use gdb anymore. This prints a backtrace after abort or segfault is detected. It also fixes the log getting cut off with the last line containing only a bracket. This change lets us know what caused a crash not just what happened the few seconds before it. I only know how to add support for Linux with GCC. Also this doesn't work outside of C/C++ such as in dynarmic or certain parts of graphics drivers. The good thing is that it'll try and just crash again but the stack frames are still there so the core dump will work just like before.
2021-08-13logging: Simplify and make thread-safeyzct123451-139/+211
This simplifies the logging system. This also fixes some lost messages on startup. The simplification is simple. I removed unused functions and moved most things in the .h to the .cpp. I replaced the unnecessary linked list with its contents laid out as three member variables. Anything that went through the linked list now directly accesses the backends. Generic functions are replaced with those for each specific use case and there aren't many. This change increases coupling but we gain back more KISS and encapsulation. With those changes it was easy to make it thread-safe. I just removed the mutex and turned a boolean atomic. I was planning to use this thread-safety in my next PR about stacktraces. It was actually async-signal-safety at first but I ended up using a different approach. Anyway getting rid of the linked list is important for that because have the list of backends constantly changing complicates things.
2021-07-06common: logging: backend: Close the file after exceeding the write limitMorph1-8/+11
There's no point in keeping the file open after the write limit is exceeded. This allows the file to be committed to the disk shortly after it is closed and avoids redundantly checking whether or not the write limit is exceeded.
2021-06-24common: Replace common_sizes into user-literalsWunkolo1-4/+7
Removes common_sizes.h in favor of having `_KiB`, `_MiB`, `_GiB`, etc user-literals within literals.h. To keep the global namespace clean, users will have to use: ``` using namespace Common::Literals; ``` to access these literals.
2021-06-22common: fs: file: Remove [[nodiscard]] attribute from FlushMorph1-1/+1
Similarly, Flush() is typically called to attempt to flush a file into the disk. In the one case where this is used, we do not care whether the flush has succeeded or not, making [[nodiscard]] unnecessary.
2021-06-22common: fs: Remove [[nodiscard]] attribute on Remove* functionsMorph1-1/+1
There are a lot of scenarios where we don't particularly care whether or not the removal operation and just simply attempt a removal. As such, removing the [[nodiscard]] attribute is best for these functions.
2021-06-13common: logging: Restructure backend codeMorph1-129/+0
2021-06-13common: logging: backend: Wrap IOFile in a unique_ptrMorph1-4/+14
Allows us to forward declare Common::FS::IOFile.
2021-05-26common: fs: Rework the Common Filesystem interface to make use of std::filesystem (#6270)Morph1-15/+12
* common: fs: fs_types: Create filesystem types Contains various filesystem types used by the Common::FS library * common: fs: fs_util: Add std::string to std::u8string conversion utility * common: fs: path_util: Add utlity functions for paths Contains various utility functions for getting or manipulating filesystem paths used by the Common::FS library * common: fs: file: Rewrite the IOFile implementation * common: fs: Reimplement Common::FS library using std::filesystem * common: fs: fs_paths: Add fs_paths to replace common_paths * common: fs: path_util: Add the rest of the path functions * common: Remove the previous Common::FS implementation * general: Remove unused fs includes * string_util: Remove unused function and include * nvidia_flags: Migrate to the new Common::FS library * settings: Migrate to the new Common::FS library * logging: backend: Migrate to the new Common::FS library * core: Migrate to the new Common::FS library * perf_stats: Migrate to the new Common::FS library * reporter: Migrate to the new Common::FS library * telemetry_session: Migrate to the new Common::FS library * key_manager: Migrate to the new Common::FS library * bis_factory: Migrate to the new Common::FS library * registered_cache: Migrate to the new Common::FS library * xts_archive: Migrate to the new Common::FS library * service: acc: Migrate to the new Common::FS library * applets/profile: Migrate to the new Common::FS library * applets/web: Migrate to the new Common::FS library * service: filesystem: Migrate to the new Common::FS library * loader: Migrate to the new Common::FS library * gl_shader_disk_cache: Migrate to the new Common::FS library * nsight_aftermath_tracker: Migrate to the new Common::FS library * vulkan_library: Migrate to the new Common::FS library * configure_debug: Migrate to the new Common::FS library * game_list_worker: Migrate to the new Common::FS library * config: Migrate to the new Common::FS library * configure_filesystem: Migrate to the new Common::FS library * configure_per_game_addons: Migrate to the new Common::FS library * configure_profile_manager: Migrate to the new Common::FS library * configure_ui: Migrate to the new Common::FS library * input_profiles: Migrate to the new Common::FS library * yuzu_cmd: config: Migrate to the new Common::FS library * yuzu_cmd: Migrate to the new Common::FS library * vfs_real: Migrate to the new Common::FS library * vfs: Migrate to the new Common::FS library * vfs_libzip: Migrate to the new Common::FS library * service: bcat: Migrate to the new Common::FS library * yuzu: main: Migrate to the new Common::FS library * vfs_real: Delete the contents of an existing file in CreateFile Current usages of CreateFile expect to delete the contents of an existing file, retain this behavior for now. * input_profiles: Don't iterate the input profile dir if it does not exist Silences an error produced in the log if the directory does not exist. * game_list_worker: Skip parsing file if the returned VfsFile is nullptr Prevents crashes in GetLoader when the virtual file is nullptr * common: fs: Validate paths for path length * service: filesystem: Open the mod load directory as read only
2021-04-20log/backend: Use in-class initializer for FileBackendLioncash1-4/+6
We can also avoid redundant constructions of the same string repeatedly.
2021-04-20log/backend: Make use of erase_ifLioncash1-4/+4
Same behavior, but less verbose.
2021-04-15log/backend: Correct order of const in copy constructorLioncash1-2/+5
Follows our predominant coding style. Also explicitly specifies the move constructor/assignment operator as well.
2021-04-15common/log: Move Log namespace into the Common namespaceLioncash1-9/+9
Forgot to move this over when I moved the rest of the source files with lacking namespaces over.
2021-04-15common: Move settings to common from core.bunnei1-1/+1
- Removes a dependency on core and input_common from common.
2021-04-09bgtc: Update to 12.x and implement OpenTaskServiceMorph1-0/+1
2021-01-04Address review commentsFearlessTobi1-5/+5
2021-01-04Delete the old log file before rotating (#5675)xperia641-0/+3
2021-01-03Fix the old log file to work with the log parser.bunnei1-1/+1
2021-01-03Rotate previous log file to '.old' if it existsxperia641-4/+9
2020-11-19hle: service: Stub OLSC Initialize and SetSaveDataBackupSettingEnabled functions.bunnei1-0/+1
- Used by Animal Cross: New Horizons v1.6.0 update, minimal stub gets this update working.
2020-11-02common: Enable warnings as errorsLioncash1-2/+0
Cleans up common so that we can enable warnings as errors.
2020-08-25logging/settings: Increase maximum log size to 100 MB and add extended logging optionM&M1-2/+12
The extended logging option is automatically disabled on boot but can be enabled afterwards, allowing the log file to go up to 1 GB during that session. This commit also fixes a few errors that are present in the general debug menu.
2020-08-03logging/backend: Make use of designated initializersLioncash1-11/+11
Same behavior, less code.
2020-01-23common/logging: don't use regex for path trimmingBreadFish641-1/+1
2019-11-15common/logging: Silence no return value warningsReinUsesLisp1-2/+6
2019-09-22log: Add logging class for Cheat EngineZach Hilman1-0/+1
This is better than just using something like Common.Filesystem or Common.Memory
2019-04-01general: Use deducation guides for std::lock_guard and std::unique_lockLioncash1-3/+3
Since C++17, the introduction of deduction guides for locking facilities means that we no longer need to hardcode the mutex type into the locks themselves, making it easier to switch mutex types, should it ever be necessary in the future.
2019-03-02logging/backend: Make time_origin a class variable instead of a local staticLioncash1-2/+1
Moves local global state into the Impl class itself and initializes it at the creation of the instance instead of in the function. This makes it nicer for weakly-ordered architectures, given the CreateEntry() class won't need to have atomic loads executed for each individual call to the CreateEntry class.
2019-03-02logging/backend: Move CreateEntry into the Impl classLioncash1-25/+26
This function is only ever used within this source file and makes it easier to remove static state in the following change.
2019-02-15Adressed review commentsB3n301-1/+2
2019-02-15threadsafe_queue: Add WaitIfEmpty and use it in loggingB3n301-13/+7
2019-02-12logging: Add Vulkan backend logging class typeReinUsesLisp1-0/+1
2018-12-07Backport review comment from citra-emu/citra#4418Tobias1-2/+2
Original reason: As Windows multi-byte character codec is unspecified while we always assume std::string uses UTF-8 in our code base, this can output gibberish when the string contains non-ASCII characters. ::OutputDebugStringW combined with Common::UTF8ToUTF16W is preferred here.
2018-10-24logging/backend: Add missing services to the log filtersLioncash1-0/+3
Just a few overlooked services.
2018-10-07logging: Add DebuggerBackend for logging to Visual StudioCarl Kenner1-2/+9
2018-09-24Stubbed IRS (#1349)David1-0/+1
* Stubbed IRS Currently we have no ideal way of implementing IRS. For the time being we should have the functions stubbed until we come up with a way to emulate IRS properly. * Added IRS to logging backend * Forward declared shared memory for irs
2018-09-15Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi1-1/+1
2018-08-14logging/backend: Use const reference to refer to log filterLioncash1-2/+3
The filter is returned via const reference, so this was making a pointless copy of the entire filter every time a message was being pushed into the logger instance.
2018-08-08common/logging: Add missing service log categoriesLioncash1-0/+8
These weren't added when the services were introduced.
2018-08-07service: Add usb servicesLioncash1-0/+1
Adds basic skeleton for the usb services based off the information provided by Switch Brew.
2018-08-05service: Add arp servicesLioncash1-0/+1
Adds the basic skeleton of the arp services based off the information provided by Switch Brew.
2018-08-02service: Add migration servicesLioncash1-0/+1
Adds the basic skeleton for the mig:usr service based off information provided by Switch Brew.
2018-08-02service: Add psc servicesLioncash1-0/+1
Adds the basic skeleton for the psc services based off the information provided by Switch Brew.
2018-08-01service: Add capture servicesLioncash1-0/+1
Adds the basic skeleton for the capture services based off information provided by Switch Brew.
2018-08-01service: Add bpc and pcv servicesLioncash1-0/+2
Adds the basic skeleton for the remaining pcv-related services based off information on Switch Brew.
2018-08-01Remove files that are not usedZach Hilman1-0/+1
2018-07-31service: Add fgm servicesLioncash1-0/+1
Adds the basic skeleton for the fgm services based off the information provided by Switch Brew.
2018-07-31service: Add the pcie serviceLioncash1-0/+1
Adds the basic skeleton of the pcie service based off information on Switch Brew.
2018-07-29service: Add wlan servicesLioncash1-0/+1
Adds the basic skeleton for the wlan services based off the information on Switch Brew.
2018-07-29service: Add btm servicesLioncash1-0/+1
Adds the skeleton for the btm services based off the information on Switch Brew.
2018-07-27service: Add ncm servicesLioncash1-0/+1
Adds the basic skeleton for the ncm services based off information on Switch Brew.
2018-07-27service: Add mii servicesLioncash1-0/+1
Adds the skeleton for the mii services based off information provided by Switch Brew
2018-07-27service: Add nfc servicesLioncash1-0/+1
Adds the skeleton of the nfc service based off the information provided on Switch Brew.
2018-07-27service/lbl: Implement EnableVrMode, DisableVrMode and GetVrModeLioncash1-0/+1
Implements these functions according to the information available on Switch Brew.
2018-07-26service: Add ldn servicesLioncash1-0/+1
Adds ldn services based off information provided by Switch Brew.
2018-07-20logging/backend: Add missing standard includesLioncash1-2/+3
A few inclusions were being satisfied indirectly. To prevent breakages in the future, include these directly.
2018-07-20logging/backend: Use std::string_view in RemoveBackend() and GetBackend()Lioncash1-10/+10
These can just use a view to a string since its only comparing against two names in both cases for matches. This avoids constructing std::string instances where they aren't necessary.
2018-07-15Logging: Dump all logs in the queue on close in debug modeJames Rowe1-1/+2
2018-07-14Logging: Don't lock the queue for the duration of the writeJames Rowe1-3/+5
2018-07-03Add configurable logging backendsJames Rowe1-8/+149
2018-06-05Service/MM: add service and stub some functionsmailwl1-0/+1
2018-05-28Service/BCAT: add module and servicesmailwl1-0/+1
2018-04-27log: Remove old logging macros and functionsLioncash1-19/+1
Now that the old macros are no longer used, we can remove all functionality related to them.
2018-04-26Added PREPO to logging backend, Removed comments from SaveReportWithUserDavid Marcec1-0/+1
2018-04-06Update fmtlib to fix msvc warningsJames Rowe1-2/+3
Additionally, when updating fmtlib, there was a change in fmtlib broke how the old logging macro was overloaded, so this works around that by just naming the fmtlib macro impl something different
2018-04-03logging: Change FmtLogMessage to use variadic template instead of FMT_VARIADICDaniel Lim Wee Soong1-3/+3
Due to premature merging of #262 I think the build may be failing right now. Should merge this ASAP to fix it.
2018-03-30service: Add NFP module interface.bunnei1-0/+1
service: Initialize NFP service. Log: Add NFP service as a log subtype.
2018-03-23Service/SSL: add ssl servicemailwl1-0/+1
2018-03-22Logging: Create logging macros based on fmtlibDaniel Lim Wee Soong1-14/+22
Add a new set of logging macros based on fmtlib Similar but not exactly the same as https://github.com/citra-emu/citra/pull/3533 Citra currently uses a different version of fmt, which does not support FMT_VARIADIC so make_args is used instead. On the other hand, yuzu uses fmt 4.1.0 which doesn't have make_args yet so FMT_VARIADIC is used.
2018-03-22Service/spl: add module and servicesmailwl1-0/+1
2018-03-20Service: add fatal:u, fatal:p servicesmailwl1-0/+1
2018-02-20Service/AOC: stub ListAddOnContent functionmailwl1-0/+1
2018-02-19logging: Add category for Friend service.bunnei1-0/+1
2018-02-15log: Add logging category for NS services.bunnei1-0/+1
2018-02-05logger: Add Time service logging category.bunnei1-0/+1
2018-02-05logger: Add SET service logging category.bunnei1-5/+3
2018-02-05logger: Add PCTL service logging category.bunnei1-0/+1
2018-02-05logger: Add LM service logging category.bunnei1-0/+1
2018-02-05logger: Add APM service logging category.bunnei1-0/+1
2018-02-05logger: Add NIFM service logging category.bunnei1-0/+1
2018-02-05logger: Add VI service logging category.bunnei1-0/+1
2018-02-04logger: Add AM service logging category.bunnei1-0/+1
2018-02-04logger: Add "account" service logging category.bunnei1-0/+1
2018-01-25audout:u OpenAudioOut and IAudioOut (#138)st4rk1-0/+1
* Updated the audout:u and IAudioOut, now it might work with RetroArch without trigger an assert, however it's not the ideal implementation * Updated the audout:u and IAudioOut, now it might work with RetroArch without trigger an assert, however it's not the ideal implementation * audout:u OpenAudioOut implementation and IAudioOut cmd 1,2,3,4,5 implementation * using an enum for audio_out_state as well as changing its initialize to member initializer list * Minor fixes, added Service_Audio for LOG_*, changed PcmFormat enum to EnumClass * Minor fixes, added Service_Audio for LOG_*, changed PcmFormat enum to EnumClass * added missing Audio loggin subclass, minor fixes, clang comment breakline * Solving backend logging conflict * minor fix * Fixed duplicated Service NVDRV in backend.cpp, my bad
2018-01-24logging: add missing NVDRV subclass to macro listRozlette1-0/+1
2018-01-21Format: Run the new clang format on everythingJames Rowe1-1/+1
2018-01-17loggin: Add IPC logging category.bunnei1-1/+2
2017-10-23logging: Rename category "Core_ARM11" to "Core_ARM".bunnei1-1/+1
2017-10-15hle: Initial implementation of NX service framework and IPC.bunnei1-1/+1
2017-10-10hle: Remove a large amount of 3ds-specific service code.bunnei1-21/+0
2017-07-10logging: Add WebService as a log cateogry.bunnei1-1/+2
2017-07-07Implement basic virtual Room support based on enet (#2803)B3n301-0/+1
* Added support for network with ENet lib, connecting is possible, but data can't be sent, yet. * fixup! Added support for network with ENet lib, * fixup! CLang * fixup! Added support for network with ENet lib, * fixup! Added support for network with ENet lib, * fixup! Clang format * More fixups! * Moved ENetHost* and ENetPeer* into pimpl classes * fixup! Moved ENetHost* and ENetPeer* into pimpl classes * fixup! Clang again * fixup! Moved ENetHost* and ENetPeer* into pimpl classes * fixup! Moved ENetHost* and ENetPeer* into pimpl classes * fixup! Moved ENetHost* and ENetPeer* into pimpl classes
2017-03-01Input: add device and factory templatewwylele1-0/+1
2017-02-21HW: add AES engine & implement AES-CCMwwylele1-0/+1
2017-02-14applied the change suggested by @wwylelenoah the goodra1-0/+1
2016-12-30Service/NFC: stub GetTagInRangeEventmailwl1-0/+1
Fix Fatal Error in Mini-Mario & Friends - amiibo Challenge
2016-12-12csnd:SND reformat source codemailwl1-0/+1
2016-11-25MIC_U: Stub service funcionsmailwl1-0/+1
2016-10-02Update the stub code of BOSSJamePeng1-0/+1
2016-09-21Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner1-1/+1
2016-09-21Remove empty newlines in #include blocks.Emmanuel Gil Peyrot1-2/+1
This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
2016-09-18Sources: Run clang-format on everything.Emmanuel Gil Peyrot1-68/+71
2016-06-25Remove superfluous std::move in return std::move(local_var)scurest1-1/+1
2016-05-07AudioCore: SDL2 SinkMerryMage1-0/+1
2016-04-02Dummy implementation dlp:SRVR Service.exhalatio1-0/+1
2016-03-31cecd:u: stub GetCecInfoEventHandle, GetChangeStateEventHandlemailwl1-0/+1
2016-03-27frd:u: Initial stub some functionsmailwl1-0/+1
2016-03-14Reorganize the ndm service path for dummy implement functionJamePeng1-0/+1
SuspendDaemons , ResumeDaemons , OverrideDefaultDaemons The NDM file move to /core/hle/service/ndm/ now!
2016-02-26Initial implementation ir:usermailwl1-0/+1
2016-02-21AudioCore: Skeleton ImplementationMerryMage1-0/+2
This commit: * Adds a new subproject, audio_core. * Defines structures that exist in DSP shared memory. * Hooks up various other parts of the emulator into audio core. This sets the foundation for a later HLE DSP implementation.
2015-11-23Services/Cam: Added new log type and camera enums from 3dbrew.Subv1-0/+1
Followup to #1102 Original author @mailwl
2015-10-04Implement gdbstubpolaris-1-0/+1
2015-09-20Implement gdbstubpolaris-1-0/+1
2015-08-15Handle invalid `Log::Class`Benjamin Barenblat1-1/+2
Add a case of `Log::Class::Count` to the switch statement that dispatches on `Log::Class`. The case simply calls the `UNREACHABLE` macro.
2015-08-03Use UNREACHABLE macro for impossible cases in previous commitBenjamin Barenblat1-2/+1
Use the UNREACHABLE macro instead of `ASSERT(false, ...);`.
2015-08-02Handle invalid `Log::Level::Count`Benjamin Barenblat1-1/+4
Add a case of `Log::Level::Count` to all switch statements that dispatch on `Log::Level`. The case simply asserts `false` and notes the invalid log level.
2015-06-12Services: Continue separation of services into their own folderspurpasmart961-0/+1
2015-05-22Service::Y2R: Support for grayscale decoding of specific formatsYuri Kunde Schlesner1-0/+1
Implements unrotated planar YUV 4:2:0 -> RGB24 conversions in Y2R. Currently only the Y (luma) channel is used, so the results don't contain color. This will be added in a later PR at some point. This is enough to get all currently know Moflex videos to decode. (Some don't display on-screen due to seemingly unrelated reasons.) Thanks to @archshift for doing the initial implementation which I cleaned up and then fixed the 8x8 block mode.
2015-05-12Common: Remove async loggingYuri Kunde Schlesner1-47/+9
It provided a large increase in complexity of the logging system while having a negligible performance impact: the usage patterns of the ring buffer meant that each log contended with the logging thread, causing it to effectively act as a synchronous extra buffering. Also removed some broken code related to filtering of subclasses which was broken since it was introduced. (Which means no one ever used that feature anyway, since, 8 months later, no one ever complained.)
2015-04-03Services: Stubs and minor changespurpasmart961-0/+2
2015-03-09Added LCD registers, and implementation for color filling in OGL code.archshift1-0/+1
2015-03-06Logging: check for filter before sending to the queue, to skip all heavy formatting on the other thread.Emmanuel Gil Peyrot1-0/+9
2015-02-22Added information reporting from ThrowFatalErrorarchshift1-0/+1
This was RE'd from the errdisp applet.
2015-02-13backend: Add logging subentry for ldrLioncash1-0/+1
Fixes an assertion upon executing citra in debug mode.
2015-02-11Asserts: break/crash program, fit to style guide; log.h->assert.harchshift1-2/+2
Involves making asserts use printf instead of the log functions (log functions are asynchronous and, as such, the log won't be printed in time) As such, the log type argument was removed (printf obviously can't use it, and it's made obsolete by the file and line printing) Also removed some GEKKO cruft.
2015-01-07CoreTiming: Ported the CoreTiming namespace from PPSSPPSubv1-0/+1
Implemented the required calls to make it work. CoreTiming: Added a new logging class Core_Timing.
2014-12-31SOC_U: Preliminary implementation of sockets.Subv1-0/+1
Stubbed CreateMemoryBlock Using Berkeley sockets, and Winsock2.2 on Windows. So far ftpony creates the socket and accepts incoming connections SOC_U: Renamed functions to maintain consistency Also prevents possible scope errors / conflicts with the actual Berkeley socket functions SOCU: Close all the opened sockets when cleaning up SOCU
2014-12-21License changepurpasmart961-1/+1
2014-12-13New logging systemYuri Kunde Schlesner1-0/+151