Created
July 27, 2014 15:05
-
-
Save pabzdzdzwiagief/10d822010b781c05a7f5 to your computer and use it in GitHub Desktop.
Logging with Kafka
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Use `sbt run` to run the example | |
| name := "kafka-logging" | |
| version := "0.1.0" | |
| scalaVersion := "2.10.3" | |
| sbtVersion := "0.13.0" | |
| libraryDependencies ++= Seq( | |
| "org.apache.kafka" % "kafka_2.10" % "0.8.1.1" | |
| exclude("javax.jms", "jms") | |
| exclude("com.sun.jdmk", "jmxtools") | |
| exclude("com.sun.jmx", "jmxri") | |
| ) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package localhost | |
| import Thread.sleep | |
| import org.apache.log4j.Logger.getLogger | |
| object KafkaLogging extends App { | |
| val logger = getLogger(KafkaLogging.getClass) | |
| import logger._ | |
| info("Start") | |
| for (iteration ← 1 to 10) { | |
| debug("Heavy computations " + iteration) | |
| sleep(1000) | |
| } | |
| info("Stop") | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| log4j.rootLogger=DEBUG | |
| log4j.logger.kafka=INFO, stdout | |
| log4j.logger.localhost=DEBUG, stdout, kafka | |
| log4j.appender.stdout=org.apache.log4j.ConsoleAppender | |
| log4j.appender.stdout.layout=org.apache.log4j.PatternLayout | |
| log4j.appender.stdout.layout.ConversionPattern=%-5p [%t]: %m%n | |
| log4j.appender.kafka=kafka.producer.NicerKafkaLog4jAppender | |
| log4j.appender.kafka.BrokerList=localhost:9092 | |
| log4j.appender.kafka.Topic=logs | |
| #log4j.appender.kafka.ProducerType=async <- prevents JVM shutdown | |
| log4j.appender.kafka.layout=org.apache.log4j.PatternLayout | |
| log4j.appender.kafka.layout.ConversionPattern=%-5p [%t]: %m |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package kafka.producer | |
| import org.apache.log4j.helpers.LogLog | |
| import org.apache.log4j.spi.LoggingEvent | |
| import java.net.ConnectException | |
| import kafka.common.FailedToSendMessageException | |
| class NicerKafkaLog4jAppender extends KafkaLog4jAppender { | |
| // See [KAFKA-847] bug | |
| override def requiresLayout = true | |
| // Prevent Kafka logging failures from breaking client code | |
| // when in synchronous mode | |
| override def append(event: LoggingEvent) { | |
| try { | |
| super.append(event) | |
| } catch { | |
| case e@ (_: ConnectException | _: FailedToSendMessageException) => | |
| LogLog.error("Message lost due to connectivity problems", e) | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment