How can I configure log4j to not print the exception stacktrace?

前端 未结 8 2324
攒了一身酷
攒了一身酷 2020-12-09 09:52

We use Log4j (and Commons Logging) to log our error messages. Now we want to set up an additional log appender that outputs fatal errors to syslog, but without the exception

相关标签:
8条回答
  • 2020-12-09 10:39

    As of Log4j2, you can just add "%ex{0}" to your log pattern (assuming you're using PatternLayout)

    https://logging.apache.org/log4j/log4j-2.1/manual/layouts.html

    0 讨论(0)
  • If you can change the source code, then another option is available for consideration.

    In my applications, I always and only log FATAL messages from my applications entry point (e.g., "main()"), since I only know that they are fatal if I am about to exit the application because of them.

    Therefore, in this one place (or handful if you have multiple application entry points), instantiate a Log4j Logger with a special class or MDC of "syslog" or similar. Upon catching a soon-to-be-FATAL error, log it in the usual way (for your other log files and such), but also invoke the fatal() method on this new "syslog" Logger with only the precise message that you want (such as only the exception class and message but without the stack trace). Then configure Log4j to direct only this "syslog" class or MDC to a newly-configured Appender that targets the SysLog.

    Ta-dum!

    0 讨论(0)
提交回复
热议问题