# Apache Log4cxx

Apache Log4cxx is a logging framework for C++.  More information is available on the
[Log4cxx Website](https://logging.apache.org/log4cxx/latest_stable).

Log4cxx is part of the [Apache Logging Services](https://logging.apache.org/) PMC.

# Issues and pull requests

Issues are maintained in the [Apache JIRA](https://issues.apache.org/jira/projects/LOGCXX/issues) 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.

Because new signups are not allowed on JIRA anymore, you may also submit a bug report through the
GitHub mirror.

If any discussion is needed before actually having any code, simply create a issue on GitHub,
a ticket on JIRA (if you have an old account), or send a message to the corresponding
[mailing list](https://logging.apache.org/log4cxx/latest_stable/mail-lists.html).
Thanks!
