【问题标题】:Wildfly log date on every stack trace lineWildfly 在每个堆栈跟踪行上记录日期
【发布时间】:2016-11-25 11:22:58
【问题描述】:

我使用 wildfly,但 FILE 日志处理程序的输出有问题。它以完整格式打印堆栈跟踪错误的每一行。这是一个剪裁的例子:

12:13:11,238 ERROR [stderr] (default task-48) org.apache.shiro.authc.UnknownAccountException: Realm [XXX.account.library.security.shiro.ClientApplicationRealm@14896aa1] was unable to find account data for the submitted AuthenticationToken [org.apache.shiro.authc.UsernamePasswordToken - XXX, rememberMe=false].
12:13:11,238 ERROR [stderr] (default task-48)   at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doSingleRealmAuthentication(ModularRealmAuthenticator.java:184)
12:13:11,238 ERROR [stderr] (default task-48)   at org.apache.shiro.authc.pam.ModularRealmAuthenticator.doAuthenticate(ModularRealmAuthenticator.java:267)
12:13:11,238 ERROR [stderr] (default task-48)   at org.apache.shiro.authc.AbstractAuthenticator.authenticate(AbstractAuthenticator.java:198)
12:13:11,238 ERROR [stderr] (default task-48)   at org.apache.shiro.mgt.AuthenticatingSecurityManager.authenticate(AuthenticatingSecurityManager.java:106)
...

我只想将"12:13:11,238 ERROR [stderr] (default task-48)" 的行放在开头一次,堆栈跟踪的每一方都以“at”开头,而不是将新的日志行解释为新的日志行。

我有一个额外的 SMTP 日志处理程序,也有同样的问题。因此,它会为堆栈跟踪的每一行发送一封电子邮件,而不是每个错误或异常发送一封电子邮件。

提前致谢。

【问题讨论】:

    标签: java logging wildfly


    【解决方案1】:

    这看起来很像有人在他们的代码中留下了如下内容:

      try {
          // do something that throws an exception
      } catch (SomeException e) {
          e.printStackTrace();
      }
    

    如果这是在 Apache Shiro 代码中,我会感到非常惊讶。

    一般来说,使用周围众多日志库之一并报告它是个好主意:

      } catch (SomeException e) {
          logger.error("Something failed", e);
      }
    

    在某些情况下,如果您在部署中使用在日志配置中定义的控制台附加程序或处理程序,这也可能导致此问题。原因是 WildFly 将 System.outSystem.err 包装在一个记录器中。这将导致您看到的格式。

    【讨论】:

    • 我不打印任何堆栈跟踪。此外,我在应用程序中使用 logback,所以我有两个日志文件,服务器日志和应用程序日志。我已经按照您描述的方式进行了异常处理,并且带有 logback 的应用程序日志看起来很好,但是 Wildfly 服务器日志中的相同错误看起来如上所述,所以我认为这是 Wildfly 错误处理的问题。
    • 你在使用 logback ConsoleAppender 吗?
    • 太好了,这是正确的提示。我删除了控制台附加程序,它工作正常。非常感谢。
    • @JamesR.Perkins 你想添加你的正确答案吗?我会删除我不正确的。
    • 我将使用 ConsoleAppender 作为另一个选项来编辑此答案。给出原始问题的答案是正确的。
    猜你喜欢
    • 2011-09-16
    • 2014-11-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多