12.8. 关于应用程序日志记录


可以使用 JBoss EAP 日志记录子系统或每个部署配置应用程序的 日志记录

请参阅关于日志记录子系统, 以使用 JBoss EAP 日志类别和处理程序来捕获日志消息。

有关应用程序日志记录的更多信息,如支持的应用程序日志记录框架和配置每个部署日志,请参阅 JBoss EAP 开发指南中的日志记录章节https://access.redhat.com/documentation/zh-cn/red_hat_jboss_enterprise_application_platform/7.0/html-single/development_guide/#logging_for_developers

12.8.1. 每部署日志

通过每个部署日志,开发人员可以提前为其应用程序配置日志配置。部署应用程序时,日志记录会根据定义的配置开始。通过此配置创建的日志文件仅包含与应用行为相关的信息。

注意

如果没有完成每个部署的日志配置,则 logging 子系统的配置将用于所有应用和服务器。

与使用系统范围的日志记录相比,这种方法具有优缺点。优点是 JBoss EAP 实例的管理员不需要配置除服务器日志记录以外的任何其他日志记录。缺点是,每个部署的日志配置仅在服务器启动时读取,因此在运行时无法更改。

有关在应用程序中使用每个部署日志的说明,请参阅 JBoss EAP 开发指南中的 添加 Per-deployment Logging 到应用程序

12.8.1.1. 禁用 Per-deployment Logging

您可以使用以下方法之一禁用每个部署日志:

  • use-deployment-logging-config 属性设置为 false

    use-deployment-logging-config 属性控制是否为每个部署日志记录扫描您的部署。默认为 true。您可以将此属性设置为 false,以禁用每个部署日志。

    /subsystem=logging:write-attribute(name=use-deployment-logging-config,value=false)
  • 使用 jboss-deployment-structure.xml 文件排除 logging 子系统。

    具体步骤,请参阅 JBoss EAP 开发指南中的 部署排除子系统

12.8.2. 日志记录配置集

日志记录配置集是可分配给部署的应用程序的独立日志记录配置集合。与常规日志记录子系统一样,日志记录配置文件可以定义处理程序、类别和根日志记录器,但它无法引用其他配置集或主日志记录子系统中的配置。 日志记录配置集的设计模拟 logging 子系统,以简化配置。

通过日志记录配置集,管理员可以创建特定于一个或多个应用程序的日志记录配置,而不影响任何其他日志记录配置。由于在服务器配置中定义了每个配置集,因此可以更改日志配置,而无需重新部署受影响的应用程序。但是,无法使用管理控制台配置日志配置集。

每个日志记录配置集都可以:

  • 唯一名称(必需)
  • 任意数量的日志处理程序
  • 任意数量的日志类别
  • 最多一个根日志记录器

应用程序可以使用 Logging-Profile 属性指定在 MANIFEST.MF 文件中要使用的日志配置集。

12.8.2.1. 配置日志记录配置集

日志记录配置集可以配置日志处理程序、类别和根日志记录器。配置日志记录配置集使用与配置日志记录子系统相同的语法,但以下区别除外:

  • 根配置路径为 /subsystem=logging/logging-profile=NAME
  • 日志记录配置集无法包含其他日志记录配置集。
  • logging 子系统具有以下可用于日志记录配置集的属性:

    • add-logging-api-dependencies
    • use-deployment-logging-config
创建并配置日志记录配置集

以下流程使用管理 CLI 创建日志记录配置文件并设置文件处理程序和日志记录器类别。

  1. 创建日志记录配置集。

    /subsystem=logging/logging-profile=PROFILE_NAME:add
  2. 创建文件处理程序。

    /subsystem=logging/logging-profile=PROFILE_NAME/file-handler=FILE_HANDLER_NAME:add(file={path=>"LOG_NAME.log", "relative-to"=>"jboss.server.log.dir"})
    /subsystem=logging/logging-profile=PROFILE_NAME/file-handler=FILE_HANDLER_NAME:write-attribute(name="level", value="DEBUG")

    如需 文件处理程序属性列表,请参阅文件日志处理程序属性。

  3. 创建日志记录器类别。

    /subsystem=logging/logging-profile=PROFILE_NAME/logger=CATEGORY_NAME:add(level=TRACE)

    如需 日志类别属性列表,请参阅日志类别属性。

  4. 将文件处理程序分配到该类别。

    /subsystem=logging/logging-profile=PROFILE_NAME/logger=CATEGORY_NAME:add-handler(name="FILE_HANDLER_NAME")

然后,您可以在其 MANIFEST.MF 文件中将日志配置集设置为供应用程序使用。如需更多信息,请参阅 JBoss EAP 开发指南中的 在应用程序中指定日志记录 配置文件。

12.8.2.2. Logging Profile 配置示例

本例演示了日志记录配置集的配置以及使用它的应用程序。它显示管理 CLI 命令、生成的 XML 以及应用程序的 MANIFEST.MF 文件。

日志记录配置集示例有以下特征:

  • 名称是 accounts-app-profile
  • 日志类别为 com.company.accounts.ejbs
  • 日志级别 TRACE
  • 日志处理程序是一个文件处理程序,它使用了文件 ejb-trace.log

管理 CLI 会话

/subsystem=logging/logging-profile=accounts-app-profile:add

/subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:add(file={path=>"ejb-trace.log", "relative-to"=>"jboss.server.log.dir"})

/subsystem=logging/logging-profile=accounts-app-profile/file-handler=ejb-trace-file:write-attribute(name="level", value="DEBUG")

/subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:add(level=TRACE)

/subsystem=logging/logging-profile=accounts-app-profile/logger=com.company.accounts.ejbs:add-handler(name="ejb-trace-file")

XML 配置

<logging-profiles>
   <logging-profile name="accounts-app-profile">
      <file-handler name="ejb-trace-file">
         <level name="DEBUG"/>
         <file relative-to="jboss.server.log.dir" path="ejb-trace.log"/>
      </file-handler>
      <logger category="com.company.accounts.ejbs">
         <level name="TRACE"/>
         <handlers>
            <handler name="ejb-trace-file"/>
         </handlers>
      </logger>
   </logging-profile>
</logging-profiles>

应用程序 MANIFEST.MF 文件

Manifest-Version: 1.0
Logging-Profile: accounts-app-profile

12.8.3. 查看部署日志记录配置

您可以使用以下管理 CLI 命令获取有关特定部署的日志记录配置的信息。

/deployment=DEPLOYMENT_NAME/subsystem=logging/configuration=CONFIG:read-resource

部署的日志记录配置值(CONFIG)可以是以下三个值之一:

例如,以下管理 CLI 命令显示 MYPROFILE 日志记录配置集的配置,供指定部署使用。

/deployment=mydeployment.war/subsystem=logging/configuration=profile-MYPROFILE:read-resource(recursive=true,include-runtime=true)

这将输出以下信息:

{
    "outcome" => "success",
    "result" => {
        "error-manager" => undefined,
        "filter" => undefined,
        "formatter" => {
            "MYFORMATTER" => {
                "class-name" => "org.jboss.logmanager.formatters.PatternFormatter",
                "module" => undefined,
                "properties" => {"pattern" => "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"}
            }
        },
        "handler" => {
            "MYPERIODIC" => {
                "class-name" => "org.jboss.logmanager.handlers.PeriodicRotatingFileHandler",
                "encoding" => undefined,
                "error-manager" => undefined,
                "filter" => undefined,
                "formatter" => "MYFORMATTER",
                "handlers" => [],
                "level" => "ALL",
                "module" => undefined,
                "properties" => {
                    "append" => "true",
                    "autoFlush" => "true",
                    "enabled" => "true",
                    "suffix" => ".yyyy-MM-dd",
                    "fileName" => "EAP_HOME/standalone/log/deployment.log"
                }
            }
        },
        "logger" => {"MYCATEGORY" => {
            "filter" => undefined,
            "handlers" => [],
            "level" => "DEBUG",
            "use-parent-handlers" => true
        }},
        "pojo" => undefined
    }
}

您还可以使用递归 read-resource 操作来读取日志记录配置以及有关部署的其他信息。

/deployment=DEPLOYMENT_NAME/subsystem=logging:read-resource(include-runtime=true, recursive=true)
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.