我正在使用JBoss 7.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>]"]}}}
答案 0 :(得分:0)
虽然您可以将邮件服务与Jboss(here和here)一起使用,但我不知道如何将其与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
答案 1 :(得分:0)
如果使用Maven Wildfly Deployment,它会将错误输出到日志中。然后,您只需让CI工具通过电子邮件发送故障日志。