https://github.com/opentable/otj-logging
OpenTable Java logging configuration component
https://github.com/opentable/otj-logging
jetty kafka logging platform-java
Last synced: 7 months ago
JSON representation
OpenTable Java logging configuration component
- Host: GitHub
- URL: https://github.com/opentable/otj-logging
- Owner: opentable
- License: apache-2.0
- Archived: true
- Created: 2014-03-19T20:47:45.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2024-05-07T22:42:12.000Z (almost 2 years ago)
- Last Synced: 2025-07-15T22:59:11.671Z (7 months ago)
- Topics: jetty, kafka, logging, platform-java
- Language: Java
- Size: 547 KB
- Stars: 4
- Watchers: 29
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
OpenTable Logging Components
============================
[](https://travis-ci.org/opentable/otj-logging)
Component Charter
-----------------
* Manage Logback configuration and integration with other logging APIs.
* Provide reference implementation of the
[standard logging format](https://wiki.otcorp.opentable.com:8443/display/CP/Log+Proposals)
* Provide Appender implementations for OpenTable logging infrastructure
* Allow logging structured data in addition to traditional String messages
otj-logging-core
----------------
The Core module provides definitions for the OpenTable common log format.
The __CommonLogFields__ interface defines the fields that are sent for all logging events.
The __HttpLogFields__ interface defines the fields that are sent for HTTP access log events.
The __ApplicationLogEvent__ class wraps a Logback logging event and exposes the common log format.
It also provides a Logback encoder __JsonLogEncoder__ which serializes the above event types
into a format suitable to submit to the OpenTable logging infrastructure through an arbitrary Appender.
The common log format defines a "servicetype" field which should be filled with the name of the service.
As the logger does not know the name of the service it is running in, this *must* be provided by the application.
For applications using our template, the `otj-server` component takes care to set this correctly.
ther applications should explicitly initialize this early on during application initialization:
```java
CommonLogHolder.setServiceType("my-cool-server");
```
otj-logging-redis
----------------
* This component was removed in 2017. All logging on OTJ platform now occurs via Kafka.
otj-logging-kafka
-----------------
The Kafka module provides an Appender that submits logging events to a Kafka queue. Example configuration:
```xml
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
localhost:12345
logs
my-application-name
```
otj-logging-bucket
-----------
Perhaps you need to rate limit or sample your logging? We've got a module for you.
Import `otj-logging-bucket` as a dependency and use either of these implementations as a decorator
for your SLF4J Logger.
* `BucketLog` - Uses a token bucket to rate limit. There are several static methods you can use. Here's an
example
```
private static final Logger LOG = BucketLog.of(MyClass.class, 10); // 10 per second
```
* `SamplingLog` - Does a coin flip. You provide a number between 0 and 1 representing probability. Providing
.1 for example means there's about a 10% rate of logging.
```
private static final Logger LOG = SamplngLog.of(MyClass.class, .1); // 10% logged
```
otj-logging
-----------
The main module ties together all of the above modules. In addition, it provides adapters to pull
together other common logging frameworks:
* `java.util.logging` via `jul-to-slf4j`
* `commons-logging` via `jcl-over-slf4j`
* `log4j` via `log4j-over-slf4j`
Usually you will not need to use this artifact directly, it is used by `otj-server`.
----
Copyright (C) 2016 OpenTable, Inc.