【问题标题】:Logging standard output with Payara/Glassfish使用 Payara/Glassfish 记录标准输出
【发布时间】:2022-08-10 18:51:33
【问题描述】:

J2ee 应用程序在标准输出上写入一些调试数据。它在 Payara 5.2 服务器上运行,该服务器配置为将标准流写入域/myDomain/log/myLogName.log但我在那里找不到消息。我确信我可以使用旧版本的 Glassfish(可能是 4.1)读取日志中的这些消息,从那时起配置发生了一些变化,但显然当前的配置是正确的。我应该检查什么?这可能是一个错误吗?

更新 1

一个月后,我仍然不知道为什么日志系统无法正常工作。我比较了域.xml在另一台服务器上使用类似的服务器,其中日志记录按预期工作并且没有发现相关差异。 发送到标准输出和标准错误的所有消息都将丢失。在 Server.log 文件中,我只能找到来自 Payara 服务器本身的消息,没有来自它包含的应用程序。

    标签: glassfish outputstream payara


    【解决方案1】:

    这种行为很奇怪,Payara 没有记录 System.out 上打印的内容,这不是配置问题。一些应用程序正在此 Payara 服务器上运行,其中一个应用程序具有以下调试代码:

    import com.fasterxml.jackson.databind;
    ...
    ObjectMapper myMapper = new ObjectMapper();
    myMapper.writeValue(System.out, myObject);
    

    在方法的API描述中写值有以下说明:

    注意:方法在这里没有显式关闭底层流;但是,这个映射器使用的 JsonFactory 可能会根据其设置选择关闭流(默认情况下,当我们构造的 JsonGenerator 关闭时,它会尝试关闭它)。

    因此,Payara 日志记录被此应用程序错误地意外停止。 容易理解,不容易发现!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 2016-09-24
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多