| = Logging in Apache James |
| |
| NOTE: This information targets developers. |
| |
| Logging is very important when running a software. |
| Most of the time people use logs for debugging and troubleshooting issues in production. |
| In Apache James we leverage a logging facade for logging http://www.slf4j.org/[Slf4j] . |
| Please see the documentation for exact details. |
| |
| In a typical application logs are stored for a specific period. |
| This can be 1 day, 1 week, etc. |
| |
| Some other typical scenarios include: |
| |
| * Rotating logs periodically. |
| * Shipping logs centrally. |
| * Saving some logging messages to other files / end devices |
| |
| By leveraging a logging facade like Slf4j, the end user has the ability to use different logging back ends and achieve the above requirements. |
| |
| Logging is something we do to help the people running our code. |
| We also help ourselves when they encounter bugs, and they need to share information with us for a fix. |
| As developers, we should be mindful of the logging statements. |
| We should also be mindful about the performance implications of logging and not abuse it. |
| |
| == Loggers used in code |
| |
| You can define a logger using a string or a class. |
| For common loggers it's ok to use a string name. |
| |
| [source,java] |
| -- |
| private static final Logger LOGGER = LoggerFactory.getLogger("org.apache.james.CONFIGURATION"); |
| private static final Logger LOGGER = LoggerFactory.getLogger(JamesServerMain.class); |
| -- |
| |
| Loggers can be hierarchical. |
| This helps when we build a logger from a class name, and we use package structure to drive the logger hierarchy. |
| |
| The most useful loggers should to be documented below. |
| Please maintain this list of loggers. |
| |
| org.apache.james.CONFIGURATION:: It is used to log events related to configuration loading and updating. |