Add logging

Logger writes information in log file.

What does this section cover?

Define a logger

A logger is defined in the following path: project_name/src/main/resources/metadata/logbackloggers.xml:
-loggername and logbackappenderfilename must be unique
-logbackclassname must be defined only once

Define logger
<logbackconfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/applications.xsd">
       <logbackloggers> 
               <logbacklogger>
                       <loggername>kounta</loggername>
                       <logbackappenderfilename>kounta</logbackappenderfilename>
                       <logbackclasses>
                              <logbackclass>
                                     <logbackclassname>com.crm.kounta.webapi.KOUNTAUtilBean</logbackclassname>
                              </logbackclass>
                       </logbackclasses> 
               </logbacklogger>
       </logbackloggers>
</logbackconfig>

Update pom.xml

Update pom.xml
....
<dependencies>
....
	<dependency>
	    <groupId>ch.qos.logback</groupId>
	    <artifactId>logback-core</artifactId>
	    <version>1.2.3</version>
	    <scope>provided</scope>
	</dependency>
	
	<dependency>
	    <groupId>ch.qos.logback</groupId>
	    <artifactId>logback-classic</artifactId>
	    <version>1.2.3</version>
	    <scope>provided</scope>
	</dependency>
</dependencies>	

Disable standalone configuration:

Add the following in standalone.xml under wildfly\standalone\configuration :

Disable standalone configuration
<subsystem xmlns="urn:jboss:domain:logging:3.0">
	<add-logging-api-dependencies value="false"/>
	<use-deployment-logging-config value="false"/>
	.......
</subsystem>

Invoke the logger object

If the file extends CRMBase:

Use logger
public void doSomething(CRMDOAccountingPeriod accountingPeriod) throws Exception {
	logger.debug("Invoked doSomething()");
	...
}

If the file does not extend CRMBase:

Use logger
public void doSomething(CRMDOAccountingPeriod accountingPeriod) throws Exception {
	Logger logger = LogUtil.getLogger(getCRMSession(), getClass());
	logger.debug("Invoked doSomething()");
	...
}

If the file is not related to an organisation:

Use logger
public void doSomething(CRMDOAccountingPeriod accountingPeriod) throws Exception {
	Logger logger = LogUtil.getLogger(getClass());
	logger.debug("Invoked doSomething()");
	...
}

If the method/file is asynchronous:

Use logger
@Asynchronous
public void execute(@Observes(during=TransactionPhase.AFTER_SUCCESS)  WorkflowRuleEvent event) {
	setLogger(event.getSession());
	logger.debug("Invoked execute()");
	...
}