Troubleshooting PubNub Java SDK

How to enable logging

Pubnub implements swappable logging using SLF4J, which allows you to switch different logging frameworks easily. All the logging calls using SLF4J API will be delegated to the underlying logging framework.

logVerbosity to PNLogVerbosity.BODY. For more info on configuration please check the API reference page.

PNConfiguration.Builder configBuilder = PNConfiguration.builder(new UserId("yourUserId"), "yourSubscribeKey");
// publishKey from Admin Portal (only required if publishing)
configBuilder.publishKey("PublishKey");
configBuilder.logVerbosity(PNLogVerbosity.BODY);
PubNub pubNub = PubNub.create(configBuilder.build());

Implement logging using log4j

To implement logging using log4j you need to add the following references to the project. Using log4j you can log to console or a file or both.

  • slf4j-api jar file (for example, slf4j-api-1.7.5.jar or the latest version) which is the SLF4J API
  • slf4j-log4j jar file (for example, slf4j-log4j-1.7.5.jar or the latest version) which acts as a bridge between slf4j and log4j
  • log4j jar file ( log4j-1.2.17.jar or the latest version), which provides the underlying logging framework

Along with these references you need to add the log4j.properties file in the CLASSPATH.

# Root logger option
log4j.rootLogger=ALL, FILE

# Direct log messages to a log file
log4j.appender.FILE =org.apache.log4j.FileAppender
log4j.appender.FILE.File=/Users/rajat/Projects/eclipsews/log4jloging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Configure log4j.properties file to write the logs to console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

More info can be found here.

Implement logging using slf4j

To implement logging using simple slf4j you need to add the following references to the project:

  • slf4j-api jar file (for example, slf4j-api-1.7.5.jar or the latest version) which is the SLF4J API.
  • slf4j-simple jar file (for example, slf4j-simple-1.7.5.jar or the latest version) which provides the underlying logging framework.
  • Along with these references you need to add the simplelogger.properties file in the CLASSPATH.

Sample simplelogger.properties

org.slf4j.simpleLogger.logFile=System.out
org.slf4j.simpleLogger.defaultLogLevel=debug
org.slf4j.simpleLogger.showDateTime=true
org.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss.SSS

Implement logging using logback-classic

To implement logging using logback-classic you need to add the following references to the project:

Implement logging using java.util.logging

To implement logging using java.util.logging you need to add the following references to the project:

  • slf4j-api jar file (for example, slf4j-api-1.7.5.jar or the latest version) which is the SLF4J API.
  • slf4j-jdk14 jar file which acts as a bridge between slf4j and java.

JVM runtime provides the underlying logging framework.

Implement logging using commons-logging

To implement logging using commons-logging you need to add the following references to the project:

  • slf4j-api jar file (for example, slf4j-api-1.7.5.jar or the latest version) which is the SLF4J API.
  • slf4j-jcl jar file (for example, slf4j-jcl-1.7.15.jar or the latest version) which acts as a bridge between slf4j and common-logging
  • common-logging.jar file which acts as an abstraction layer.

The underlying logging framework is chosen dynamically by commons-logging.

No logging

To implement no logging you have two options:

  • Option 1: Add the reference of slf4j-api jar file (for example, slf4j-api-1.7.5.jar or the latest version) which is the SLF4J API and nothing else.

  • Option 2:

  1. Add the reference of slf4j-api jar file (for example, slf4j-api-1.7.5.jar or the latest version) which is the SLF4J API.
  2. Then, add a reference to slf4j-nop jar file (for example, slf4j-nop-1.7.5.jar or the latest version).
Last updated on