You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.0KB

  1. #include "MainLogger.h"
  2. #include "AllUtils.h"
  3. namespace {
  4. juce::String getTimestamp() {
  5. const juce::Time currentTime(juce::Time::getCurrentTime());
  6. juce::String milliseconds(currentTime.getMilliseconds());
  7. while (milliseconds.length() < 3) {
  8. milliseconds = "0" + milliseconds;
  9. }
  10. return currentTime.formatted("%Y-%m-%d_%H-%M-%S.") + milliseconds;
  11. }
  12. }
  13. MainLogger::MainLogger(const char* appName, const char* appVersion, const juce::File& logDirectory) {
  14. // Open log file
  15. _logFile = logDirectory.getNonexistentChildFile(getTimestamp(), ".txt", true);
  16. _logFile.create();
  17. _logEnvironment(appName, appVersion);
  18. }
  19. void MainLogger::logMessage(const juce::String& message) {
  20. const juce::String outputMessage = getTimestamp() + " : " + message + "\n";
  21. juce::FileOutputStream output(_logFile);
  22. if (output.openedOk()) {
  23. output.writeText(outputMessage, false, false, "\n");
  24. }
  25. }
  26. void MainLogger::_logEnvironment(const char* appName, const char* appVersion) {
  27. juce::FileOutputStream output(_logFile);
  28. if (output.openedOk()) {
  29. const juce::String archString(
  30. #if defined(__x86_64__) || defined(_M_AMD64)
  31. "x86_64"
  32. #elif defined(__aarch64__) || defined(_M_ARM64)
  33. "arm64"
  34. #else
  35. #error "Unknown arch"
  36. #endif
  37. );
  38. const juce::String outputMessage(
  39. "******************************************************\n" +
  40. juce::String(appName) + ": " + juce::String(appVersion) + "\n"
  41. "OS: " + juce::SystemStats::getOperatingSystemName() + "\n"
  42. "ARCH: " + archString + "\n"
  43. "CPUs: " + juce::String(juce::SystemStats::getNumPhysicalCpus()) + " (" + juce::String(juce::SystemStats::getNumCpus()) + ")\n"
  44. "RAM: " + juce::String(juce::SystemStats::getMemorySizeInMegabytes()) + "MB\n"
  45. "******************************************************\n\n");
  46. output.writeText(outputMessage, false, false, "\n");
  47. }
  48. }