10.8. 在 JBoss EAP 中配置应用程序日志
您可以使用 JBoss EAP 日志记录子系统 或基于每个 部署的应用配置日志记录。logging 子系统提供集中管理,而 每个 部署日志则启用特定于每个应用程序的自定义配置。
10.8.1. 每部署配置的日志配置 复制链接链接已复制到粘贴板!
通过按部署的日志,开发人员可以提前为其应用程序配置日志记录。部署应用程序时,日志会根据定义的配置启动。通过此配置生成的日志文件仅包含有关应用行为的信息。
使用每部署日志记录时,应用不使用 logging 子系统配置。相反,它使用应用部署文件中定义的日志记录配置。每个应用程序都可以具有自定义日志记录设置,独立于全局配置。
与系统范围的日志记录相比,这种方法具有优缺点。优点是 JBoss EAP 管理员不需要配置服务器日志以外的任何日志。缺点是,每个部署的日志记录配置在服务器启动时只只读,且在运行时无法更改。
10.8.1.1. 禁用每个部署的日志 复制链接链接已复制到粘贴板!
您可以通过设置 use-deployment-logging-config 属性或排除 logging 子系统来禁用 JBoss EAP 中的每次部署日志记录。
先决条件
- JBoss EAP 正在运行。
流程
使用以下方法之一禁用每个部署的日志:
将
use-deployment-logging-config属性设置为false。/subsystem=logging:write-attribute(name=use-deployment-logging-config,value=false)use-deployment-logging-config属性控制您的部署是否针对每个部署日志记录扫描。默认值为true。把它设置为false以禁用每个部署的日志。-
使用
jboss-deployment-structure.xml文件排除logging子系统。
10.8.2. 应用程序日志记录配置集 复制链接链接已复制到粘贴板!
日志记录配置集是您可以分配给部署的应用程序的独立日志记录配置集合。与常规的 logging 子系统一样,日志记录配置集可以定义处理程序、类别、格式器和根日志记录器。但是,它无法引用其他配置集或主 日志记录子系统 中的配置。日志记录配置文件的设计类似于 logging 子系统,以便更轻松地配置。
通过日志记录配置集,管理员可以创建特定于一个或多个应用的日志记录配置,而不影响其他配置。每个配置集在服务器配置中定义,允许更改日志记录设置,而无需重新部署受影响的应用。
每个日志记录配置集都可以有:
- 唯一的名称。此值是必需的。
- 任意数量的日志处理程序。
- 任意数量的日志类别。
- 最多为一个根日志记录器。
- 日志格式器.
应用程序可以通过设置 Logging-Profile 属性来指定要在其 MANIFEST.MF 文件中使用的日志记录配置集。
10.8.2.1. 配置日志记录配置集 复制链接链接已复制到粘贴板!
您可以使用日志处理程序、类别和根日志记录器配置日志记录配置集。配置日志记录配置集的语法与配置 logging 子系统相同,但有以下区别:
-
root 配置路径为
/subsystem=logging/logging-profile=NAME。 - 日志记录配置集不能包含其他日志记录配置集。
logging子系统包括以下属性,它们不适用于日志记录配置集:-
add-logging-api-dependencies -
use-deployment-logging-config
-
您可以使用管理 CLI 在 JBoss EAP 中配置日志配置文件。或者,您可以通过管理控制台配置它们,方法是导航到 Configuration > Subsystems > Logging > Logging > Logging Profiles。
先决条件
- JBoss EAP 正在运行。
流程
使用以下命令创建日志记录配置集:
/subsystem=logging/logging-profile=PROFILE_NAME:add使用以下命令添加文件处理器:
/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")使用以下命令创建日志记录器名称:
/subsystem=logging/logging-profile=PROFILE_NAME/logger=CATEGORY_NAME:add(level=TRACE)使用以下命令将文件处理程序分配给类别:
/subsystem=logging/logging-profile=PROFILE_NAME/logger=CATEGORY_NAME:add-handler(name="FILE_HANDLER_NAME")
然后,您可以在其 MANIFEST.MF 文件中将应用程序设置为使用日志记录配置集。
10.8.2.2. 应用程序日志记录配置集配置示例 复制链接链接已复制到粘贴板!
本例演示了日志记录配置集的配置和使用它的应用程序。它包括管理 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
10.8.3. 查看部署日志配置 复制链接链接已复制到粘贴板!
您可以使用管理 CLI 查看 JBoss EAP 中部署的日志配置。
先决条件
- JBoss EAP 正在运行。
流程
使用以下命令检索特定部署的日志记录配置:
/deployment=DEPLOYMENT_NAME/subsystem=logging/configuration=CONFIG:read-resourceCONFIG值可以是以下之一:-
默认:如果部署正在使用logging子系统,这将输出 logging 子系统配置。 -
profile-PROFILE_NAME:如果部署使用 logging 子系统中定义的日志记录配置集,这将输出日志记录配置集配置。 -
使用的配置文件的路径,如
myear.ear/META-INF/logging.properties。
-
要显示特定日志记录配置集的配置,请运行以下命令:
/deployment=mydeployment.war/subsystem=logging/configuration=profile-MYPROFILE:read-resource(recursive=true,include-runtime=true)此命令检索指定部署使用的
MYPROFILE日志记录配置集的配置。预期输出
{ "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)