在我的 Apache mod_jk 日志中,我有如下格式的条目:
[Wed Oct 26 10:59:43 2011] [3732:2460] [error] jk_ajp_common.c (1618): (myJbossServer) Tomcat is down or network problems. Part of the response has already been sent to the client
RedHat 故障排除指南说,
请注意,对于这些消息,消息的 [11159:3086420192] 部分用作相关连接/请求的标识符。因此,从日志中的错误点回溯可以帮助澄清导致错误的连接/请求周围的活动。
我该怎么做?我在 JBoss 日志中找不到标识符。我在 JBoss 日志中没有看到任何标识符,错误,是,跟踪号,否。我需要在哪里查找以跟踪此标识符?我并不是真正在寻找问题的解决方案,只是如何使用标识符并在 Apache mod_jk 和 Jboss 之间进行检查。
编辑:我问的是在哪里可以找到 myJBossServer 日志中的标识符 [3732:2460]。
答案1
实际上它就在你面前,失败的工作程序是括号里面的工作程序,名为 myJbossServer。
检查该工人的workers.properties,您将找到它的IP或主机名。
在那个时候,希望您能从您的 JBoss/操作系统获得提示(如果您遇到 CPU/内存/ecc 问题,sar 会非常方便)。
实际上,你让我对方括号之间的数字感到好奇。我尝试搜索文档,但找不到它是什么。不过,检查源代码后,我发现了以下内容:
int jk_log(jk_logger_t *l,
const char *file, int line, const char *funcname, int level,
const char *fmt, ...)
{
...
if (line) { /* line==0 only used for request log item */
/* Log [pid:threadid] for all levels except REQUEST.
* This information helps to correlate lines from different logs.
* Performance is no issue, because with production log levels
* we only call it often, if we have a lot of errors
*/
rc = snprintf(buf + used, usable_size - used,
"[%" JK_PID_T_FMT ":%" JK_PTHREAD_T_FMT "] ", getpid(), jk_gettid());
查看您粘贴的 RedHat 文档,PID:TOD 标识有助于匹配您看到的相同 mod_jk.log,而不是将 mod_jk.log 与 JBoss 日志交叉引用。如果您想交叉引用这两个日志,那么您应该找到其他方法,在 Apache / mod_jk 中设置自定义标头并将其打印在您的 JBoss 日志中是我现在想到的第一个方法。或者至少您可以检查故障时间前后的请求。