每个堆栈跟踪线上的Wildfly日志日期

时间:2016-11-25 11:22:58

标签: java logging wildfly

我使用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日志处理程序,存在同样的问题。因此,它会为堆栈跟踪的每一行发送一封电子邮件,而不是每个错误或异常发送一封电子邮件。

提前致谢。

1 个答案:

答案 0 :(得分:2)

这看起来很像有人在代码中留下了类似的内容:

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

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

一般来说,最好使用众多日志记录库中的一个并报告如下:

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

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