提问人:Dave 提问时间:2/22/2014 更新时间:9/28/2016 访问量:1756
我可以让 JBoss CLI 工具报告导致我的部署失败的异常吗?
Can I get the JBoss CLI tool to report the exception that caused my deployment to fail?
问:
我正在使用 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赞
Sabuj Hassan
2/28/2014
#1
虽然你可以用 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 错误是用这种格式来的。因此,这对于检测 jboss 错误很有用。JBASxxxxxx
## 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" [email protected]
fi
评论
0赞
Dave
3/1/2014
关于从日志文件中获取行,获取最后 3 行是行不行的。有时,提示部署失败的错误不仅仅跨越最后 3 行。
0赞
Sabuj Hassan
3/1/2014
明白了。在这种情况下,您可以轮换日志文件。我的意思是,当您运行部署时,请将旧日志移动到存档中,并每次都创建新的日志文件。然后读取整个文件以查找错误 msg()。cat file.log
0赞
Dave
3/4/2014
因为我正在尝试自动化整个事情,所以读取一个潜在的数千兆字节文件以查找错误不是一种选择。我很好奇我是否可以从 CLI 工具中获取导致失败的错误消息,如果没有,是否有其他自动化方法可以解决这个问题。
0赞
KevinO
9/28/2016
#2
如果使用 Maven Wildfly 部署,它会将错误输出到日志中。然后,只需让 CI 工具通过电子邮件发送故障日志即可。
评论