Skip to content

telia-oss/rootle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rootle

Cross language structured log APIs and, error log gRPC client interceptor.

Methods

Name Parameters
Info (message)
Warn (message)
Error (message, event, downstream, stacktrace, code)

Transports

File transport, allows writting logs to file

Language status
TypeScript
Go Planned
Kotlin Planned

Log structure

Field Type Required
id string Yes
application string Yes
time string Yes
message string Yes
level string Yes
event string No
downstream Downstream No
stacktrace string No
code "exit code" int No

Downstream structure

Field Type Required
http Http No
grpc Grpc No

Http structure

Field Type Required
method string No
statusCode HttpStatusCode(enum) No
url string No
useragent string No
referer string No
payload string No

Grpc structure

Field Type Required
procedure string No
code GrpcCodes(enum) No
service string No
useragent string No
referer string No
payload string No

Usage

Examples

  • Go

import (
	rootle "github.com/telia-oss/rootle"
)

	ctx := context.Background()

logger := rootle.New(ctx, *rootle.NewConfig().WithID("ac12Cd-Aevd-12Grx-235f4").WithApplication("invoice-lambda"))

logger.Info("Hello World")
logger.Warn("Hello World")

data := map[string]interface{}{
  "foo": "bar",
}

json, _ := json.Marshal(data)

logger.Error("Hello World", rootle.String(string(json)), &rootle.Downstream{
  Http: &rootle.Http{
    Method:     "GET",
    StatusCode: rootle.INTERNAL_SERVER_ERROR,
    Url:        "http://localhost:8080/invoice/123",
    Useragent:  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
    Referer:    "http://localhost:8080/",
    Payload:    string(json),
  },
  Grpc: &rootle.Grpc{
    Procedure: "GetInvoice",
    Code:      rootle.INTERNAL,
    Service:   "invoice",
    Useragent: "	/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
    Referer: "http://localhost:8080/",
    Payload: string(json),
  },
}, rootle.String("billing/user"), rootle.Int(0))
  • Kotlin
val logger = Rootle("ac12Cd-Aevd-12Grx-235f4", "Billing-lambda")
logger.info("Hello world")
logger.warn("Hello world")

val jsonObject = JsonObject()
jsonObject.addProperty("foo", "bar")


logger.error("Error message", jsonObject.toString(), logger.Downstream(logger.Http("GET", StatusCode.InternalServerError.code, "http://localhost:8080/invoice/123",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
    "http://localhost:8080/",  jsonObject.toString()),
    logger.Grpc("GetInvoice", GrpcCodes.internalError.code, "invoice",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
        "http://localhost:8080/", jsonObject.toString())), "billing/user", 0);

Output example

- Info: {"id":"ac12Cd-Aevd-12Grx-235f4","application":"invoice-lambda","time":"2006-01-02T15:04:05.999999999Z","message":"Hello World","level":"INFO"}

- Warn: {"id":"ac12Cd-Aevd-12Grx-235f4","application":"invoice-lambda","time":"2006-01-02T15:04:05.999999999Z","message":"Hello World","level":"WARN"}

- Error: 
{
   "id":"ac12Cd-Aevd-12Grx-235f4",
   "application":"invoice-lambda",
   "time":"2006-01-02T15:04:05.999999999Z",
   "message":"Hello World",
   "level":"ERROR",
   "event":"{\"foo\":\"bar\"}",
   "downstream":{
      "grpc":{
         "procedure":"GetInvoice",
         "code":13,
         "service":"invoice",
         "useragent":"\t/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
         "referer":"http://localhost:8080/",
         "payload":"{\"foo\":\"bar\"}"
      },
      "http":{
         "method":"GET",
         "status_code":500,
         "url":"http://localhost:8080/invoice/123",
         "useragent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
         "referer":"http://localhost:8080/",
         "payload":"{\"foo\":\"bar\"}"
      }
   },
   "stackTrace":"billing/user",
   "code":0
}