Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Library independent logging support #137

Closed
end2endzone opened this issue Dec 1, 2023 · 1 comment
Closed

Library independent logging support #137

end2endzone opened this issue Dec 1, 2023 · 1 comment
Labels
code cleanup The code needs optimization enhancement New feature or request
Milestone

Comments

@end2endzone
Copy link
Owner

Is your feature request related to a problem? Please describe.
All application modules (version 0.8.0 and lower) dependents on Google GLOG library for logging. This way of implementing logging is complicated, increases class coupling and forces all future development to use the same logging library. A more maintainable logging feature should be implemented.

Describe the solution you'd like
ShellAnything's core should define a logging interface that is then implemented by a logging framework. This method would assure that ShellAnything logging code can be easily swapped for another logging library/framework.

Describe alternatives you've considered
The actual implementation is the alternative and is considered problematic because all classes and modules have a dependency to GLOG.

Additional context
N/A

@end2endzone end2endzone added enhancement New feature or request code cleanup The code needs optimization labels Dec 1, 2023
@end2endzone end2endzone added this to the 0.9.0 milestone Dec 1, 2023
@end2endzone
Copy link
Owner Author

Sample code for manually logging to GLOG library from outside of a source file :

::google::LogMessage("this_file_do_not_exists.cpp", 0).stream() << "Hello world from my fake source file!";
::google::LogMessage("this_file_do_not_exists.cpp", 0, google::GLOG_WARNING).stream() << "sample warning message!";
::google::LogMessage("this_file_do_not_exists.cpp", 0, google::GLOG_ERROR).stream() << "example of an error message!";

end2endzone added a commit that referenced this issue Dec 3, 2023
…a dependency to google's glog/logging.h.

Renamed function GlogUtils::InitLogger() to InitGlog().
#137
end2endzone added a commit that referenced this issue Dec 3, 2023
end2endzone added a commit that referenced this issue Dec 6, 2023
* feature-issue137:
  * Fixed issue #137: Library independent logging support.
  Fixed error in how to define the application's file name based on running from the shell extension's (i.e: through explorer.exe) or from unit tests executable.
  Fixed warning: 1>CUSTOMBUILD : CMake error : install(EXPORT "shellanything-targets" ...) includes target "sa.shellextension" which requires target "sa.logger.glog" that is not in any export set.
  Removed GLOG dependency from sa.api, sa.shellextension, sa.shared and sa.tests projects. #137
  Created function ShutdownGlog() in GlogUtil to prevent module having a dependency to google's glog/logging.h. Renamed function GlogUtils::InitLogger() to InitGlog(). #137
  Moved GlogUtils functions in shellanything::logging::glog namespace.
  Moved generic code from GlogUtils.cpp to ShellAnything's App class. #137 #111.
  Moved GlogUtils from /src/shared/ to /src/logger/glog/. #137
  Renamed LoggerManager class to App. #137 #111
  Moved glog include instruction from GlogUtils.h to GlogUtils.cpp.
  Removed usage of GLOG's `LOG` macro from files. #137
  Removed usage of GLOG's `LOG` macro from sa.shellextension project. #137
  Removed GLOG dependency from sa.core.dll. #137
  Added a temporary dllmain.cpp DLL un/initialization code for sa.logger.glog.dll. #137
  Created class LoggerGlog which is an implementation of ILogger. #137
  Created ILogger, LoggerManager and LoggerHelper classes. #137
end2endzone added a commit that referenced this issue Dec 28, 2023
- Renamed LoggerGlog class to GlogLoggerService.
This change is for #134 and #137. This is to match design from #134 and #129.
end2endzone added a commit that referenced this issue Dec 29, 2023
Add a comment in IWhatEverService interface declarations that it is required to keep the core decoupled from something.
#134 #137
end2endzone added a commit that referenced this issue Dec 30, 2023
* feature-issue129:
  * Fixed issue #129: Utilize clipboard contents as well as set them.
  Renamed "Dynamic Properties" to "Live Properties" for clarity. Updated documentation. Created new unit tests. #129
  Added "Service" postfix to App::Set/GetRegistry() and Set/GetLogger(). Add a comment in IWhatEverService interface declarations that it is required to keep the core decoupled from something. #134 #137
  Decoupled clipboard management from sa.core.dll: created an IClipboard interface in the core. Created an implementation that matches the current clipboard management code in sa.windows.dll. Implemented `clipboard` property to reference current clipboard content. The property name is `clipboard` to match existing `<clipboard>` action. #129
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
code cleanup The code needs optimization enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant