What are the different ways to produce report for testNg result ?

Testng can present report in two form-

Listeners implement the interface org.testng.ITestListener and are notified in real time of when a test starts, passes, fails, etc…

Reporters implement the interface org.testng.IReporter and are notified when all the suites have been run by TestNG. The IReporter instance receives a list of objects that describe the entire test run.