【问题标题】:Unable to see Glassfish logs in eclipse console在 Eclipse 控制台中看不到 Glassfish 日志
【发布时间】:2018-09-04 20:26:28
【问题描述】:

我无法在 Eclipse 控制台中看到 Glassfish 的日志。

我尝试在服务器 -> Glassfish -> 查看日志文件中右键单击 GlassFish 服务器,但它显示了一个以以下结尾的文件:

2018-09-04T18:36:51.945+0100|Severe: The SSL certificate has expired: [
[
  Version: V3
  Subject: OU=Equifax Secure Certificate Authority, O=Equifax, C=US
  Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
  Key:  Sun RSA public key, 1024 bits
  modulus: 135786214035069526348186531221551781468391756233528066061569654028671100866720352830303278016129003918213826297308054231261658522889438712013757624116391437358730449661353175673177742307421061340003741057138887918110217006515773038453829253517076741780039735595086881329494037450587568122088113584549069375417
  public exponent: 65537
  Validity: [From: Sat Aug 22 17:41:51 BST 1998,
               To: Wed Aug 22 17:41:51 BST 2018]
  Issuer: OU=Equifax Secure Certificate Authority, O=Equifax, C=US
  SerialNumber: [    35def4cf]
Certificate Extensions: 7
[1]: ObjectId: 1.2.840.113533.7.65.0 Criticality=false
Extension unknown: DER encoded OCTET string =
0000: 04 0D 30 0B 1B 05 56 33   2E 30 63 03 02 06 C0     ..0...V3.0c....
[2]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 48 E6 68 F9 2B D2 B2 95   D7 47 D8 23 20 10 4F 33  H.h.+....G.# .O3
0010: 98 90 9F D4                                        ....
]
]
[3]: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
  CA:true
  PathLen:2147483647
]
[4]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
     [CN=CRL1, OU=Equifax Secure Certificate Authority, O=Equifax, C=US]

无论我是否停止、重新启动、在 GF 服务器上运行 web 应用程序等,以及如果我实际查看文件 (...\glassfish5\glassfish\domains\domain1\logs\server .log) 我发现它显示的内容在 5400 行左右,server.log 文件中实际上有 8600 行,因此 server.log 文件中实际上比上一个文件多 3000 行显示在 eclipse 中。例如,日志提取中的时间戳是 18:36,但当前时间是 21:21,hte 文件的当前尾部是这样的:

[2018-09-04T21:02:45.234+0100] [glassfish 5.0] [INFO] [AS-WEB-GLUE-00172] [javax.enterprise.web] [tid: _ThreadID=100 _ThreadName=Thread-23] [timeMillis: 1536091365234] [levelValue: 800] [[
  Loading application [__admingui] at [/]]]

[2018-09-04T21:02:45.235+0100] [glassfish 5.0] [INFO] [NCLS-CORE-00022] [javax.enterprise.system.core] [tid: _ThreadID=100 _ThreadName=Thread-23] [timeMillis: 1536091365235] [levelValue: 800] [[
  Loading application __admingui done in 2,175 ms]]

[2018-09-04T21:14:29.419+0100] [glassfish 5.0] [INFO] [] [] [tid: _ThreadID=30 _ThreadName=Thread-8] [timeMillis: 1536092069419] [levelValue: 800] [[
  doGet - name=null]]

此外,server.log 文件,当我在 Notepad++ 中打开它时,修改文件时令人抓狂的不刷新。我必须从磁盘重新加载它才能查看文件中的更改。 因此,我似乎可以实际监视此日志文件的唯一方法是使用来自 cygwin 的 tail -f。

任何人都知道如何解决这个问题,特别是我如何在 Eclipse 中实时查看 glassfish 的日志输出,包括 SOP?它在 Netbeans 中运行良好。

非常感谢您的帮助。

编辑

我注意到当我重新启动服务器时,在 Eclipse 的控制台中重新读取 server.log 文件,但总是(似乎)只到同一点:关于 SSL 证书到期的严重警告的位出现:

2018-09-04T23:27:33.879+0100|Info: visiting unvisited references
2018-09-04T23:27:34.425+0100|Severe: The SSL certificate has expired: [
[
  Version: V3
  Subject: OU=Equifax Secure Certificate Authority, O=Equifax, C=US
  Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
  Key:  Sun RSA public key, 1024 bits
  modulus: 135786214035069526348186531221551781468391756233528066061569654028671100866720352830303278016129003918213826297308054231261658522889438712013757624116391437358730449661353175673177742307421061340003741057138887918110217006515773038453829253517076741780039735595086881329494037450587568122088113584549069375417
  public exponent: 65537
  Validity: [From: Sat Aug 22 17:41:51 BST 1998,
               To: Wed Aug 22 17:41:51 BST 2018]
  Issuer: OU=Equifax Secure Certificate Authority, O=Equifax, C=US
  SerialNumber: [    35def4cf]
Certificate Extensions: 7
[1]: ObjectId: 1.2.840.113533.7.65.0 Criticality=false
Extension unknown: DER encoded OCTET string =
0000: 04 0D 30 0B 1B 05 56 33   2E 30 63 03 02 06 C0     ..0...V3.0c....
[2]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 48 E6 68 F9 2B D2 B2 95   D7 47 D8 23 20 10 4F 33  H.h.+....G.# .O3
0010: 98 90 9F D4                                        ....
]
]
[3]: ObjectId: 2.5.29.19 Criticality=false
BasicConstraints:[
  CA:true
  PathLen:2147483647
]
[4]: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
     [CN=CRL1, OU=Equifax Secure Certificate Authority, O=Equifax, C=US]

在这里,server.log 停止。 server.log 文件中没有更多内容出现在 Eclipse 的控制台中。

【问题讨论】:

  • 购买新电脑后遇到同样的问题。您使用的是什么版本的 Eclipse?我的是光子 4.8.0。我曾经在 Oxygen 工作的地方工作,这是我所知道的新计算机的唯一变化。您最近是否更新到了较新版本的 eclipse?
  • 同理,photon 4.8:面向 Web 开发人员的 Eclipse Java EE IDE。版本:4.8.0.20180619-1200 内部版本号:20180619-1200
  • 是的,完全一样。您使用的是哪个 Glassfish 版本?提交的错误报告:bugs.eclipse.org/bugs/show_bug.cgi?id=538955
  • Glassfish 5.0。 TBH 我认为鉴于我看不到其他任何人遇到/经历过同样的问题,我刚刚得出结论,这一定是我的设置有问题。 AFAIK GF5 和 eclipse photon 都没有在昨天发布。感谢您提交错误报告。
  • 我有同样的问题我使用 glassfish 5.0 尝试切换到 4.1.2 仍然相同我什至从日食氧气切换到光子仍然相同。我去了 server.log 文件,在文本编辑器中打开它,我想要的所有日志都在那里。知道我应该改用什么版本吗?

标签: eclipse glassfish


【解决方案1】:

奇怪的是,它 - 在新的 glassfish 安装上 - 最初不是问题,并且所有内容都按预期记录。但过一会,日志就会变空。

我终于发现从 glassfish 中删除过期的证书可以恢复正常的日志记录。

我做了什么:

  1. 找出过期证书的别名。运行: cd domains/<domain>/config keytool -v -list -keystore cacerts.jks 例如,您将看到您提到的 equifax 将解析为以下别名:equifaxsecureca
  2. 从您的证书文件中删除证书:运行: keytool -delete -keystore cacerts.jks -alias equifaxsecureca -storePass changeit

为方便起见,以下脚本是我目前(7 月 28 日)在 glassfish 和 payara 上使用的脚本。

cd ${GLASSFISH_HOME}/glassfish/domains/domain1/config/ && \
for cert in "equifaxsecureca" "gtecybertrustglobalca" "utnuserfirstclientauthemailca" "deutschetelekomrootca2" "secomvalicertclass1ca" "valicertclass2ca" "entrustsslca" "certplusclass2primaryca" "certplusclass3pprimaryca" "utndatacorpsgcca" "utnuserfirstobjectca" "utnuserfirstobjectca [jdk]" "utnuserfirsthardwareca" "cert_45_deutsche_telekom_root_ca_245" "cert_29_certplus_class_2_primary_ca29" "cert_38_deutsche_telekom_root_ca_238" "utnuserfirsthardwareca [jdk]" "certplusclass3pprimaryca [jdk]" "certplusclass2primaryca [jdk]" "utnuserfirstclientauthemailca [jdk]"; \
do \
keytool -delete -keystore cacerts.jks -alias "$cert" -storePass changeit || echo "cert not present";\
done

keytool 可以在您的 jdk/bin 文件夹中找到。

这同样适用于 payara。

【讨论】:

  • 这应该是公认的答案。有完全相同的问题,删除 Equifax 证书对我有用。我不知道为什么 Eclipse 的行为如此疯狂怪异,因为 Netbeans 根本不在乎。应该注意的是,在 Windows 下,keystore.exe 位于/jdk/bin/keystore.exe 下,并且该命令可能应该从那里运行。哦,我(作为开发人员)没有存储密钥库的密码,无论如何它都会要求它。在这种情况下,只需按空输入即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 2014-08-03
  • 2014-02-08
  • 2020-10-19
相关资源
最近更新 更多