Error logging
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.
By default, when you initialize Kotlin Chat SDK, logging is disabled (LogLevel.OFF
).
Available logging options include:
Value | Description |
---|---|
ERROR | Used for logging error messages. |
WARN | Used for logging warning messages. |
INFO | Usedfor logging informational messages. |
DEBUG | Used for logging debug messages. |
VERBOSE | The most detailed level of logging. It includes everything at the DEBUG level and more fine-grained information. |
To start log events, set LogLevel
to one of the above values by passing it in ChatConfiguration
.
val chatConfig = ChatConfiguration(logLevel = LogLevel.INFO)
val pnConfiguration = PNConfiguration.builder(userId = UserId("myUserId"), subscribeKey = "mySubscribeKey").build()
Chat.init(chatConfig, pnConfiguration).async { result ->
result.onSuccess { chat: Chat ->
println("Chat successfully initialized having logLevel: ${chatConfig.logLevel}")
}.onFailure { exception: PubNubException ->
println("Exception initialising chat: ${exception.message}")
}
}
Implement logging on Android
To implement logging on Android you need to add the following dependency to the project.
The logs will appear in Logcat.
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
dependencySLF4J-LOG4J API
dependency which acts as a bridge between slf4j and log4jLOG4j
dependency which provides the underlying logging framework
Along with these references you need to add the log4j.properties
file in the CLASSPATH
Configure log4j.properties file to write the logs to a log file
# 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 slf4j
you need to add the following references to the project.
SLF4J API
dependencySLF4J-Simple
dependency 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.
SLF4J API
dependencyLogback classic
dependency which provides the underlying logging frameworkLogback core
dependency which provides the underlying logging framework
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
dependencySLF4J-JDK14
dependency which acts as a bridge betweenslf4j
andjava
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
dependencySLF4J-JCL
dependency which acts as a bridge between slf4j and common-loggingcommons-logging
dependency which acts as an abstraction layer
The underlying logging framework is chosen dynamically by commons-logging
.