APR termination must be after destruction of all log4cxx objects (#122)

* Make APR initialization/termination book-end all log4cxx object life times.
  As the APRInitializer class has member variables whose destructors call apr_* functions, apr_terminate() cannot be called 
  the the APRInitializer class destructor.

* Delay heirarchy destruction until other threads have exited doAppend()

* Added another test for the fallback handling to ensure that multiple appenders on the same logger will not segfault if replaced while iterating.

* Stop using APR on other threads once exit() has been called

Co-authored-by: Robert Middleton <robert.middleton@rm5248.com>
11 files changed
tree: d9b1614058129424ce4daeeaa11fc1a8e249f796
  1. .github/
  2. src/
  3. .asf.yaml
  4. .astylerc
  5. .editorconfig
  6. .gitattributes
  7. .gitignore
  8. CMakeLists.txt
  9. doap_log4cxx.rdf
  10. INSTALL
  11. KEYS
  12. liblog4cxx-qt.pc.in
  13. liblog4cxx.pc.in
  14. LICENSE
  15. NOTICE
  16. README.md
  17. sonar-project.properties
README.md

Issues and pull requests

Issues are maintained in the Apache JIRA by default, so before posting pull requests, please have a look there if an associated issue with your problem/feature/... exists already. If not, it‘s generally OK to directly create pull requests IF code is already available, but please be somewhat verbose: Provide some background information about what actual problem the PR solves, why this needs to be solved etc. Don’t just provide commits about the fact that you changed something.

If any discussion is needed before actually having any code, simply create a ticket in JIRA or send a message to the corresponding mailing list. Thanks!