Java 每个堆栈跟踪行上的Wildfly日志日期
我使用wildfly,但文件日志处理程序的输出有问题。它以完整格式打印堆栈跟踪的每一行错误。这是一个切分的例子:Java 每个堆栈跟踪行上的Wildfly日志日期,java,logging,wildfly,Java,Logging,Wildfly,我使用wildfly,但文件日志处理程序的输出有问题。它以完整格式打印堆栈跟踪的每一行错误。这是一个切分的例子: 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 accou
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:11238 ERROR[stderr](default task-48)”
的行在开始时出现一次,堆栈的每一方跟踪以“at”开头,而不是作为新的日志行解释为新的日志行
我有一个额外的SMTP日志处理程序,也有同样的问题。因此,它为堆栈跟踪的每一行发送一封电子邮件,而不是为每个错误或异常发送一封电子邮件
提前谢谢 这看起来很像有人在代码中留下了如下内容:
try {
// do something that throws an exception
} catch (SomeException e) {
e.printStackTrace();
}
如果这是在ApacheShiro代码中,我会非常惊讶
一般来说,最好使用许多日志库中的一个,并按如下方式报告:
} catch (SomeException e) {
logger.error("Something failed", e);
}
在某些情况下,如果您正在部署中使用日志配置中定义的控制台追加器或处理程序,这也可能导致此问题。原因是WildFly在记录器中同时包装了
System.out
和System.err
。这将导致您看到的格式。这看起来很像有人在代码中留下了如下内容:
try {
// do something that throws an exception
} catch (SomeException e) {
e.printStackTrace();
}
如果这是在ApacheShiro代码中,我会非常惊讶
一般来说,最好使用许多日志库中的一个,并按如下方式报告:
} catch (SomeException e) {
logger.error("Something failed", e);
}
在某些情况下,如果您正在部署中使用日志配置中定义的控制台追加器或处理程序,这也可能导致此问题。原因是WildFly在记录器中同时包装了
System.out
和System.err
。这将导致您看到的格式。我不打印任何堆栈跟踪。此外,我在应用程序中使用logback,因此我有两个日志文件,服务器日志和应用程序日志。我已经按照您描述的方式进行了异常处理,带有logback的应用程序日志看起来很好,但wildfly服务器日志中的相同错误与上面描述的相同,因此我认为这是wildfly错误处理的问题。您是否使用logback ConsolePender?很好,这是正确的提示。我删除了控制台appender,它工作正常。非常感谢。@JamesR.Perkins您想添加正确答案吗?我将删除不正确的答案。我将使用ConsolePender作为另一个选项编辑此答案。考虑到原始问题,答案是正确的。我不打印任何堆栈跟踪。此外,我在应用程序中使用logback,因此我有两个日志文件,服务器日志和应用程序日志。我已经按照您描述的方式进行了异常处理,带有logback的应用程序日志看起来很好,但wildfly服务器日志中的相同错误与上面描述的相同,因此我认为这是wildfly错误处理的问题。您是否使用logback ConsolePender?很好,这是正确的提示。我删除了控制台appender,它工作正常。非常感谢。@JamesR.Perkins您想添加正确答案吗?我将删除不正确的答案。我将使用ConsolePender作为另一个选项编辑此答案。根据原来的问题,答案是正确的。