How to include Log4j2 messages in TestNG reporting

前端 未结 2 852
轻奢々
轻奢々 2021-02-09 20:20

I would like to have the Log4j2 logging information available in the TestNG reports for all of the test cases.

TestNG uses a special logger class called Reporter.java t

2条回答
  •  生来不讨喜
    2021-02-09 20:52

    From what I can tell you just need to implement a simple Appender. Something like:

    @Plugin(name="Reporter", category ="Core", elementType="appender", printObject=true)
    public class ReporterAppender extends AbstractAppender {
    
        private ReporterAppender(final String name, final Layout layout) {
            super(name, null, layout, false);
        }
    
        @Override
        public void append(final LogEvent event) {
            final Layout layout = getLayout();
            if (layout != null && layout instanceof AbstractStringLayout) {
                 Reporter.log(((AbstractStringLayout) layout).toSerializable(event));
            } else {
                 Reporter.log(event.getMessage().getFormattedMessage();            }
    
        @PluginFactory
        public static ReporterAppender createAppender(
            @PluginAttribute("name") @Required(message = "A name for the Appender must be specified") final String name,
            @PluginElement("Layout") Layout layout) {
            return new ReporterAppender(name, layout);
        }
    }
    

提交回复
热议问题