Skip to content
This repository has been archived by the owner on Jan 13, 2022. It is now read-only.

Logging Messages

Tranch edited this page Apr 6, 2017 · 7 revisions

Scribe implements the following Thrift interface:

enum ResultCode
{
  OK,
  TRY_LATER
}

struct LogEntry
{
  1:  string category,
  2:  string message
}

service scribe extends fb303.FacebookService
{
  ResultCode Log(1: list<LogEntry> messages);
}

To send a message to a Scribe Server running on a given machine and port, we simply need to create a Scribe Client and call Log(). Here is an example using Python:

from scribe import scribe
from thrift.transport import TTransport, TSocket
from thrift.protocol import TBinaryProtocol

category = 'test'
message = 'hello world'
log_entry = scribe.LogEntry(category, message)
# depending on thrift version
# log_entry = scribe.LogEntry(dict(category=category, message=message))

socket = TSocket.TSocket(host='localhost', port=1456)
transport = TTransport.TFramedTransport(socket)
protocol = TBinaryProtocol.TBinaryProtocol(trans=transport, strictRead=False, strictWrite=False)
client = scribe.Client(iprot=protocol, oprot=protocol)

transport.open()
result = client.Log(messages=[log_entry])
transport.close()

Other known Scribe log appenders:

To learn more about the Thrift software framework, visit the Thrift homepage: http://thrift.apache.org

Clone this wiki locally