我正在使用 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>]"]}}}
最佳答案
虽然您可以使用 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
关于deployment - 我可以让 JBoss CLI 工具报告导致我的部署失败的异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21945637/