Panel |
---|
|
Loggers Logger writes information in log file.
What does this section cover? |
Define a logger
Retrieve logger
To retrieve the current CRM Session object you have to use getCRMSession() method which is implemented in com.crm.businessobject.CRMBase super class. Note that all CRMBO, CRMUI, CRMProcess and CRMAPIBean classes extend CRMBase.
Code Block |
---|
title | Retrieve CRM Session |
---|
collapse | true |
---|
|
public CRMDO copy(CRMDO dto)
{
CRMSession session = getCRMSession();
...
} |
Use logger
After retrieving the CRM Session, you can use it to get information about the logged in user, the server, the database and the general and formatting settings.
...
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
Code Block |
---|
title | Define logger |
---|
collapse | true |
---|
|
<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
Code Block |
---|
title | Update pom.xml |
---|
collapse | true |
---|
|
....
<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 :
Code Block |
---|
title | Disable standalone configuration |
---|
collapse | true |
---|
|
<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:
Code Block |
---|
title | Use logger |
---|
collapse | true |
---|
|
public CRMDOvoid copydoSomething(CRMDOCRMDOAccountingPeriod dtoaccountingPeriod) throws Exception {
CRMSession session = getCRMSession();
if( dto instanceof CUSTOMCRMDORentalTypeProduct)
{
CUSTOMCRMDORentalTypeProduct oldProduct = (CUSTOMCRMDORentalTypeProduct) dto;
CUSTOMCRMDORentalTypeProduct newProduct = (CUSTOMCRMDORentalTypeProduct)oldProduct.clone();
newProduct.setCreatedDate(getCurrentDatelogger.debug("Invoked doSomething()");
...
} |
If the file does not extend CRMBase:
Code Block |
---|
title | Use logger |
---|
collapse | true |
---|
|
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:
Code Block |
---|
title | Use logger |
---|
collapse | true |
---|
|
public void doSomething(CRMDOAccountingPeriod accountingPeriod) throws Exception {
Logger logger = LogUtil.getLogger(getClass());
newProductlogger.setCreatedByUnit(session.getUnitdebug("Invoked doSomething()");
newProduct.setCreatedByUser(ejbSession.getLoggedUser());
newProduct.setUpdatedByUnit(null);
newProduct.setUpdatedByUser(null);
newProduct.setUpdatedDate(null);
}...
} |
If the method/file is asynchronous:
Code Block |
---|
title | Use logger |
---|
collapse | true |
---|
|
@Asynchronous
public void execute(@Observes(during=TransactionPhase.AFTER_SUCCESS) WorkflowRuleEvent event) {
setLogger(event.getSession());
logger.debug("Invoked execute()");
...
} |