gpt4 book ai didi

tomcat - 如何使用 java.util.logging.SimpleFormatter 为 Tomcat 的控制台日志指定单独的日志格式

转载 作者:行者123 更新时间:2023-11-28 21:48:02 24 4
gpt4 key购买 nike

我在我的 Tomcat 安装上部署了几个 Web 应用程序,我在我的 context.xml 中使用 swallowOutput="true" 以实现不同的'per -webapp'-log-outputs,不仅仅是一个大的 catalina.out 用于所有 webapps。那个作品不错因此,我为每个 Web 应用使用一个 logging.properties 文件。

Web 应用程序使用基本的 System.out.println 生成日志输出。

现在,我想定义一个由 Tomcat 生成的非常简单的日志格式,方法是指定

java.util.logging.SimpleFormatter.format=%5$s %n

但是,生成的日志总是显示我不需要的完整格式,无论我如何指定上面的格式字符串:

22-Jun-2019 16:08:15.310 INFO [http-nio-80-exec-10] org.apache.catalina.core.StandardWrapperValve.invoke backend Sat Jun 22 16:08:15 CEST 2019: ... output of the servlet's System.out.println-calls ...

我想生成一个小而清晰的日志,每行中没有“StandardWrapperValve”等标记。

我的全局 logging.properties 文件是这样的:

# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.SimpleFormatter

java.util.logging.SimpleFormatter.format=%5$s %n

org.apache.juli.SimpleFormatter.format=%5$s %n

############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler

# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE

# To see debug messages in TldLocationsCache, uncomment the following line:
#org.apache.jasper.compiler.TldLocationsCache.level = FINE

# To see debug messages for HTTP/2 handling, uncomment the following line:
#org.apache.coyote.http2.level = FINE

# To see debug messages for WebSocket handling, uncomment the following line:
#org.apache.tomcat.websocket.level = FINE

每个 webapp 的 logging.properties 文件是这样的:

handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = webappX.

java.util.logging.ConsoleHandler.level = FINE

java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%5$s %n
1catalina.java.util.logging.SimpleFormatter.format=%5$s %n
org.apache.juli.SimpleFormatter.format=%5$s %n

如您所见,我已经尝试了不同的行来将格式字符串设置为不同的类名,例如:

  • java.util.logging.SimpleFormatter.format
  • 1catalina.java.util.logging.SimpleFormatter.format
  • org.apache.juli.SimpleFormatter.format

因为我在其他 StackOverflow 线程上找到了一些关于此的信息,但没有一个显示出任何效果。日志输出格式保持不变,始终为完整格式。格式字符串没有显示任何影响。

感谢任何想法,通博

最佳答案

我在 Tomcat 8.5.15 上测试了一些变体,发现在 per-webapp logging.properties 中设置 org.apache.juli.FileHandler.formatter 似乎也很重要

所以这是我的完整结果 per-webapp logging.properties:

handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

org.apache.juli.FileHandler.level = ALL
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = webappX.
org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter

而在原来的全局apache-tomcat/conf/logging.properties中,我只修改了java.util.logging.ConsoleHandler.formatter并添加了格式:

java.util.logging.ConsoleHandler.level = FINE
#java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%5$s %n

指定的 SimpleFormatter.format 对 webApp 日志文件有效,如果 webApp 指定 org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter每个网络应用程序 logging.properties。它对原始控制台输出也很有效。

关于tomcat - 如何使用 java.util.logging.SimpleFormatter 为 Tomcat 的控制台日志指定单独的日志格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56716302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com