Deployment 我可以让JBoss CLI工具报告导致部署失败的异常吗?

Deployment 我可以让JBoss CLI工具报告导致部署失败的异常吗?,deployment,jboss,jboss7.x,error-reporting,command-line-interface,Deployment,Jboss,Jboss7.x,Error Reporting,Command Line Interface,我正在使用JBoss7.1.3.Final。使用CLI工具进行部署时,是否还可以输出导致部署失败的日志中发生的异常?我们运行一个自动化的夜间部署,我希望能够在电子邮件中报告异常,而不是强迫人们登录机器并查看服务器日志。这是我目前正在做的 $ $JBOSS_HOME/bin/jboss-cli.sh --file=/tmp/my.cli 其中“my.cli”的内容是 connect deploy --force /tmp/my.war 然而,现在在公共线上报告的是 {"JBAS014653:

我正在使用JBoss7.1.3.Final。使用CLI工具进行部署时,是否还可以输出导致部署失败的日志中发生的异常?我们运行一个自动化的夜间部署,我希望能够在电子邮件中报告异常,而不是强迫人们登录机器并查看服务器日志。这是我目前正在做的

$ $JBOSS_HOME/bin/jboss-cli.sh --file=/tmp/my.cli
其中“my.cli”的内容是

connect
deploy --force /tmp/my.war
然而,现在在公共线上报告的是

{"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.web.deployment.default-host./my" => "org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./my: JBAS018040: Failed to start context"},"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.deployment.unit.\"my.war\".jboss.security.jacc Missing[JBAS014861: <one or more transitive dependencies>]"]}}}
{“JBAS014653:复合操作失败并被回滚。失败的步骤:”=>{“操作步骤-2”=>{“JBAS014671:失败的服务”=>{“jboss.web.deployment.default host./my”=>“org.jboss.msc.service.StartException in service jboss.web.deployment.default host./my:JBAS018040:启动上下文失败”},“JBAS014771:缺少/不可用依赖项的服务”=>[“jboss.deployment.unit.\“my.war\”.jboss.security.jacc缺少[JBAS014861:][]}

虽然您可以使用Jboss(和)的邮件服务,但我不知道如何从
Jboss cli
中整合您的邮件。因此,我的首选是发送邮件,并由您负责

我假设您的
jboss
正在
linux
服务器上运行:

运行部署命令时,将输出放入shell变量(如果返回任何)。例如:

deploy_response = $( $JBOSS_HOME/bin/jboss-cli.sh --file=/tmp/my.cli )
或者,如果将日志写入日志文件,则将最后几行(您知道发生错误时通常写入多少行)读取到变量中

## readling last 3 lines and joining them into one line
deploy_response = $( tail -n3 /your/log/file.log | tr "\\n" " ")
现在,您手中有了部署响应。检查那边的错误消息。通常Jboss错误的格式是
JBASxxxxxx
。因此,这对于检测Jboss错误非常有用

## if [[ $deploy_response == *Composite operation failed* ]]
if [[ $deploy_response =~ JBAS\d\d\d\d\d\d ]]
then
   ## assuming you have send mail is configured.
   echo $deploy_response | mail -s "jboss deployment error" admins@localdomain.com
fi

如果您使用,它会将错误输出到日志中。然后您只需让CI工具通过电子邮件发送失败日志。

关于从日志文件中获取行,获取最后3行是不行的。有时导致部署失败的错误会超出最后3行。明白了您的意思。在这种情况下,您可以旋转日志f我的意思是,在运行部署时,每次都将旧日志移动到存档并创建新日志文件。然后读取整个文件中的错误消息(
cat file.log
)。因为我正在尝试将整个过程自动化,所以无法选择读取可能有数千GB的错误文件。我很好奇是否可以从CLI工具中获取导致故障的错误消息,如果不能,是否有其他自动化方法来解决。