Log4j
Appenders are nice, and they help take our logging standard to a whole new level.
The following tutorial demonstrates how to integrate Log4j with Coralogix Java SDK.
Requirements
Coralogix Send-Your-Data API key
Company ID - You can find your company Id from the 'Settings' -> 'Send Your Data' : company ID will be on the top right.
Add the 'Coralogix log4j2-appender' to your project dependencies.
As we use Artifactory as our repository you will need to also add a repository to your pom.xml file:
<repositories>
<repository>
<id>coralogix</id>
<name>coralogix repo</name>
<url>https://cgx.jfrog.io/artifactory/maven</url>
</repository>
</repositories>
Then, add the dependency to your pom.xml file:
<dependencies>
<dependency>
<groupId>com.coralogix.sdk</groupId>
<artifactId>log4j2-appender</artifactId>
<version>2.0.11</version>
</dependency>
</dependencies>
If your Coralogix domain does not end in .com, you will need to add the proper API endpoint:
Domain | Coralogix API Endpoint |
---|---|
coralogix.com | api.coralogix.com |
coralogix.us | api.coralogix.us |
eu2.coralogix.com | api.eu2.coralogix.com |
app.coralogix.in | api.app.coralogix.in |
coralogixsg.com | api.coralogixsg.com |
Usage
Below are Code examples to demonstrate how to add the appender.
LOG4J-2 Appender
<?xml version="1.0" encoding="UTF-8"?>
<Configuration packages="com.coralogix.sdk.appenders">
<Appenders>
<Coralogix name="Coralogix" companyId="*insert your company ID*" privateKey="*Insert your company private key*" applicationName="*Insert desired Application name*" subSystemName="*Insert desired Subsystem name*">
</Coralogix>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Coralogix"/>
</Root>
</Loggers>
</Configuration>
Above settings will add the Coralogix appended to the root logger, thus all loggers will also send to Coralogix.
Use any logger to send data.
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class App
{
public static void main( String[] args )
{
Logger logger = LogManager.getRootLogger();
logger.info("Hello from coralogix");
}
}
To create a specific logger that will send data to Coralogix, use these settings:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration packages="com.coralogix.sdk.appenders">
<Appenders>
<Coralogix name="Coralogix" companyId="*insert your company ID*" privateKey="*Insert your Send-Your-Data API key*" applicationName="*Insert desired Application name*" subSystemName="*Insert desired Subsystem name*">
</Coralogix>
<Console name="Console">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Console"/>
</Root>
<logger name="coralogixLogger" level="INFO">
<AppenderRef ref="Coralogix"/>
</logger>
</Loggers>
</Configuration>
Then simply use the specific logger to send data.
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class App
{
public static void main( String[] args )
{
Logger logger = LogManager.getLogger("coralogixLogger");
logger.info("Hello from coralogix");
}
}
LOG4J-1 Appender
For legacy support you can still use the old log4j version.
log4j.appender.CORALOGIX=com.coralogix.sdk.appenders.CoralogixLog4j1Appender
log4j.appender.CORALOGIX.companyId=<Your Coralogix company ID>
log4j.appender.CORALOGIX.privateKey=<Your Coralogix Secret>
log4j.appender.CORALOGIX.applicationName=<Your Coralogix application name>
log4j.appender.CORALOGIX.subsystemName=<Your Coralogix subsystem name>
log4j.rootLogger=DEBUG, CORALOGIX
LOG4J-2 HTTP Appender
This is useful for cases where some software doesn't allow installing 3rd party appenders.
<Http name="Coralogix" url="https://ingress.<span class="domain-value"></span>/logs/v1/singles">
<Property name="Authorization" value="Bearer ${sys:CORALOGIX_API_KEY}" />
<Property name="Content-Type" value="application/json" />
<PatternLayout>
<pattern>{"json": {"message": "%enc{%m}{JSON}", "timestamp": "%d","severity": "%p", "className": "%C", "methodName": "%M", "threadId": "%t"}, "applicationName": "ApplicationName", "subsystemName": "SubsystemName"}</pattern>
</PatternLayout>
</Http>
Support
Need help?
Our world-class customer success team is available 24/7 to walk you through your setup and answer any questions that may come up.
Contact us via our in-app chat or by emailing [email protected].