@@ -418,168 +418,7 @@ logback.xml Example:
418
418
</root>
419
419
</configuration>
420
420
```
421
- # Kafka transport for logstash-gelf
422
421
423
-
424
- logstash-gelf can be used together with [ Kafka] ( https://kafka.apache.org/ ) for shipping log events.
425
-
426
- The URI used as connection property is a java.net.URI. The minimal URI must contain at least a host and
427
- the Fragment (Topic Name).
428
- The URL allows to specify one or more brokers but in this case you must define ports inside URL.
429
-
430
- kafka://broker[:port]?[producer_properties]#[log-topic]
431
-
432
- Example:
433
-
434
- kafka://localhost#topic-log
435
- kafka://localhost:9092#topic-log
436
- kafka://localhost:9092,localhost:9093,localhost:9094#topic-log
437
- kafka://localhost?acks=all#topic-log
438
- kafka://localhost:19092?acks=1&max.block.ms=1000&transaction.timeout.ms=1000&request.timeout.ms=1000#kafka-log-topic
439
-
440
- * scheme (fixed: Kafka, directly used to determine the to be used sender class)
441
- * host (variable: the host your Kafka broker runs on)
442
- * port (variable: the port your Kafka broker runs on)
443
- * query (variable: kafka producer config properties which is usually defined inside producer.properties file)
444
- * fragment (variable: the topic we send log messages on)
445
-
446
- Sample log4J2 configuration:
447
- ``` xml
448
- <Configuration packages =" biz.paluch.logging.gelf.log4j2" >
449
- <Appenders >
450
- <Gelf name =" gelf" host =" kafka://localhost#kafka-log-topic" port =" 9093" version =" 1.1" extractStackTrace =" true"
451
- filterStackTrace =" true" mdcProfiling =" true" includeFullMdc =" true" maximumMessageSize =" 8192"
452
- originHost =" %host{fqdn}" additionalFieldTypes =" fieldName1=String,fieldName2=Double,fieldName3=Long" >
453
- <Field name =" timestamp" pattern =" %d{dd MMM yyyy HH:mm:ss,SSS}" />
454
- <Field name =" level" pattern =" %level" />
455
- <Field name =" simpleClassName" pattern =" %C{1}" />
456
- <Field name =" className" pattern =" %C" />
457
- <Field name =" server" pattern =" %host" />
458
- <Field name =" server.fqdn" pattern =" %host{fqdn}" />
459
-
460
-
461
- <!-- This is a static field -->
462
- <Field name =" fieldName2" literal =" fieldValue2" />
463
-
464
- <!-- This is a field using MDC -->
465
- <Field name =" mdcField2" mdc =" mdcField2" />
466
- <DynamicMdcFields regex =" mdc.*" />
467
- <DynamicMdcFields regex =" (mdc|MDC)fields" />
468
- </Gelf >
469
- <Console name =" Console" target =" SYSTEM_OUT" >
470
- <PatternLayout pattern =" %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
471
- </Console >
472
- </Appenders >
473
- <Loggers >
474
- <Root level =" INFO" >
475
- <AppenderRef ref =" gelf" />
476
- <AppenderRef ref =" Console" />
477
- </Root >
478
- </Loggers >
479
- </Configuration >
480
- ```
481
- Sample spring logback configuration:
482
- ``` xml
483
- <!DOCTYPE configuration >
484
-
485
- <configuration >
486
- <include resource =" org/springframework/boot/logging/logback/base.xml" />
487
- <contextName >test</contextName >
488
- <jmxConfigurator />
489
- <appender name =" STDOUT" class =" ch.qos.logback.core.ConsoleAppender" >
490
- <encoder class =" ch.qos.logback.classic.encoder.PatternLayoutEncoder" >
491
- <pattern >
492
- %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
493
- </pattern >
494
- </encoder >
495
- </appender >
496
- <appender name =" gelfUdp" class =" biz.paluch.logging.gelf.logback.GelfLogbackAppender" >
497
- <host >udp:localhost</host >
498
- <port >12201</port >
499
- <version >1.1</version >
500
- <facility >java-test</facility >
501
- <extractStackTrace >true</extractStackTrace >
502
- <filterStackTrace >true</filterStackTrace >
503
- <mdcProfiling >false</mdcProfiling >
504
- <timestampPattern >yyyy-MM-dd HH:mm:ss,SSS</timestampPattern >
505
- <maximumMessageSize >8192</maximumMessageSize >
506
- <!-- This are static fields -->
507
- <additionalFields >fieldName1=fieldValue1,fieldName2=fieldValue2</additionalFields >
508
- <!-- Optional: Specify field types -->
509
- <additionalFieldTypes >fieldName1=String,fieldName2=Double,fieldName3=Long</additionalFieldTypes >
510
-
511
- <!-- This are fields using MDC -->
512
- <mdcFields >mdcField1,mdcField2</mdcFields >
513
- <dynamicMdcFields >mdc.*,(mdc|MDC)fields</dynamicMdcFields >
514
- <includeFullMdc >true</includeFullMdc >
515
- <filter class =" ch.qos.logback.classic.filter.ThresholdFilter" >
516
- <level >ALL</level >
517
- </filter >
518
- </appender >
519
-
520
- <appender name =" gelfKafka" class =" biz.paluch.logging.gelf.logback.GelfLogbackAppender" >
521
- <host >kafka://localhost:9092?acks=all& max.block.ms=1000& transaction.timeout.ms=1000& request.timeout.ms=1000#kafka-log-topic</host >
522
- <port ></port >
523
- <version >1.1</version >
524
- <facility >java-test</facility >
525
- <extractStackTrace >true</extractStackTrace >
526
- <filterStackTrace >true</filterStackTrace >
527
- <mdcProfiling >false</mdcProfiling >
528
- <timestampPattern >yyyy-MM-dd HH:mm:ss,SSS</timestampPattern >
529
- <maximumMessageSize >8192</maximumMessageSize >
530
-
531
- <!-- This are static fields -->
532
- <additionalFields >fieldName1=fieldValue1,fieldName2=fieldValue2</additionalFields >
533
- <!-- Optional: Specify field types -->
534
- <additionalFieldTypes >fieldName1=String,fieldName2=Double,fieldName3=Long</additionalFieldTypes >
535
-
536
- <!-- This are fields using MDC -->
537
- <mdcFields >mdcField1,mdcField2</mdcFields >
538
- <dynamicMdcFields >mdc.*,(mdc|MDC)fields</dynamicMdcFields >
539
- <includeFullMdc >true</includeFullMdc >
540
- <filter class =" ch.qos.logback.classic.filter.ThresholdFilter" >
541
- <level >INFO</level >
542
- </filter >
543
- </appender >
544
-
545
- <root level =" INFO" >
546
- <appender-ref ref =" gelfKafka" />
547
- </root >
548
- <logger name =" org.apache.kafka" level =" ALL" additivity =" false" >
549
- <appender-ref ref =" gelfUdp" />
550
- <appender-ref ref =" STDOUT" />
551
- </logger >
552
- <logger name =" javax.management" level =" ALL" additivity =" false" >
553
- <appender-ref ref =" gelfUdp" />
554
- <appender-ref ref =" STDOUT" />
555
- </logger >
556
- </configuration >
557
- ```
558
- ** Limitations**
559
-
560
- Some configurations will be overridden or set by default:
561
- - acks (If you set it to 0 it will be set to 1 by default for log message acknowledgements) defaultValue = all
562
- - retries defaultValue=2
563
- - value.serializer ByteArraySerializer (will always override)
564
- - key.serializer ByteArraySerializer (will always override)
565
-
566
- ** When using with SL4J/Logback/Spring:**
567
-
568
- When you are using logback/sl4j/spring you must not use kafka sender for loggers of ` org.apache.kafka ` and ` javax.management `
569
- packages this will create a cyclic dependency for [ KafkaProducer] ( https://kafka.apache.org/20/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html ) which is also using loggers from these package.
570
- You can use other logstash-gelf appender such as UDP or TCP to log these logs to Graylog.
571
-
572
- You can set these loggers by changing appender-ref this way:
573
- ``` xml
574
- <logger name =" org.apache.kafka" level =" ALL" additivity =" false" >
575
- <appender-ref ref =" gelfUdp" />
576
- <appender-ref ref =" STDOUT" />
577
- </logger >
578
- <logger name =" javax.management" level =" ALL" additivity =" false" >
579
- <appender-ref ref =" gelfUdp" />
580
- <appender-ref ref =" STDOUT" />
581
- </logger >
582
- ```
583
422
Versions/Dependencies
584
423
---------------------
585
424
This project is built against following dependencies/versions:
0 commit comments