Apache Tomcat 9
The internal logging for Apache Tomcat uses JULI, a packaged renamed fork of Apache Commons Logging that is hard-coded to use the framework. This ensures that Tomcat’s internal logging and any web application logging will remain independent, even if a web application uses Apache Commons Logging.
To configure Tomcat to use an alternative logging framework for its internal logging, follow the instructions provided by the alternative logging framework for redirecting logging for applications that use . Keep in mind that the alternative logging framework will need to be capable of working in an environment where different loggers with the same name may exist in different class loaders.
A web application running on Apache Tomcat can:
- Use any logging framework of its choice.
- Use system logging API, .
- Use the logging API provided by the Java Servlets specification,
The logging frameworks used by different web applications are independent. See class loading for more details. The exception to this rule is . If it is used directly or indirectly by your logging library then elements of it will be shared across web applications because it is loaded by the system class loader.
Java logging API — java.util.logging
Apache Tomcat has its own implementation of several key elements of API. This implementation is called JULI. The key component there is a custom LogManager implementation, that is aware of different web applications running on Tomcat (and their different class loaders). It supports private per-application logging configurations. It is also notified by Tomcat when a web application is unloaded from memory, so that the references to its classes can be cleared, preventing memory leaks.
This implementation is enabled by providing certain system properties when starting Java. The Apache Tomcat startup scripts do this for you, but if you are using different tools to run Tomcat (such as jsvc, or running Tomcat from within an IDE), you should take care of them by yourself.
More details about java.util.logging may be found in the documentation for your JDK and on its Javadoc pages for the package.
More details about Tomcat JULI may be found below.
Servlets logging API
The calls to to write log messages are handled by internal Tomcat logging. Such messages are logged to the category named
This logging is performed according to the Tomcat logging configuration. You cannot overwrite it in a web application.
The Servlets logging API predates the API that is now provided by Java. As such, it does not offer you much options. E.g., you cannot control the log levels. It can be noted, though, that in Apache Tomcat implementation the calls to or are logged at the INFO level. The calls to or are logged at the SEVERE level.
Console
When running Tomcat on unixes, the console output is usually redirected to the file named . The name is configurable using an environment variable. (See the startup scripts). Whatever is written to will be caught into that file. That may include:
- Uncaught exceptions printed by
- Thread dumps, if you requested them via a system signal
When running as a service on Windows, the console output is also caught and redirected, but the file names are different.
The default logging configuration in Apache Tomcat writes the same messages to the console and to a log file. This is great when using Tomcat for development, but usually is not needed in production.
Old applications that still use or can be tricked by setting attribute on a Context. If the attribute is set to , the calls to during request processing will be intercepted, and their output will be fed to the logging subsystem using the calls.
Note, that the feature is actually a trick, and it has its limitations. It works only with direct calls to , and only during request processing cycle. It may not work in other threads that might be created by the application. It cannot be used to intercept logging frameworks that themselves write to the system streams, as those start early and may obtain a direct reference to the streams before the redirection takes place.
Access logging
Access logging is a related but different feature, which is implemented as a . It uses self-contained logic to write its log files. The essential requirement for access logging is to handle a large continuous stream of data with low overhead, so it only uses Apache Commons Logging for its own debug messages. This implementation approach avoids additional overhead and potentially complex configuration. Please refer to the Valves documentation for more details on its configuration, including the various report formats.
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/13442.html