Skip to main content

Samarkand logger

Project description

smklog

Purpose

Generic way of logging that can be used across services and platforms to provide easily searchable data in our ELK cluster. Most important field is 'request_id' allowing us to trace a requests journey through the architecture.

Library

Log library should support both python and node JS. Can be open sourced and published to public npm/pypi (via gitlab ci) for ease of use.

Log Message Fields

  • request_id (optional): Original request ID, this should be added to swagger API as header

This is an optional header used to pass original request ID through flow (e.g. storefront api gateway / nginx -> storefront service -> nomad api gateway -> nomad fc)

Actual ID is generated by port of first call, normally api gateway

If present should be used as request_id in log message, if not present should use alternative e.g. api gateway request ID

  • platform: e.g. youzan, or 'storefront_wechat' etc. for our own platform

  • service: e.g. nomad_envoy_order or storefront_auth

  • source: Who made the request if known, e.g. odoo, or storefront_user for storefront

  • category: Type of event e.g. debug, error, info, database_query, kafka_message

  • label: Label for event e.g. update_user_avatar, translate_error_message

  • message: Readable message describing event e.g. "Translated error message for youzan service not responding"

  • data: If message carries json data e.g. http request/response or data that can be JSON stringified.

  • user: Identifier for user instigating log message e.g. storefront user ID, or app (api key) ID in case of nomad user

  • store_id (optional): Store ID if known e.g. samarkand.youzan.foreveryoung or samarkand.storefront.mybrandstore

Usage

from smklog import SmkLog

platform = "youzan"
service = "nomad_envoy_order"

logger = SmkLog(platform, service)

source = "odoo"
category = "info"
label = "get_all_orders"

message = "Translated error message for youzan service not responding"

data_json = {"key":"value","键":"值"}

user = "1234567"

store_id = "samarkand.youzan.foreveryoung"
request_id = "0EFD81C9-16BF-4FF6-8CF8-00FEB0619A47"


logger.log(source, category, label, message, data_json, user, store_id, request_id)

The output would be like

2019-01-16 12:04:45,067 - youzan_nomad_envoy_order - INFO - {"platform":"youzan","service":"nomad_envoy_order","source":"odoo","category":"info","label":"get_all_orders","message":"Translated error message for youzan service not responding","data":"{\"key\":\"value\",\"键\":\"值\"}","user":"1234567","store_id":"samarkand.youzan.foreveryoung","request_id":"0EFD81C9-16BF-4FF6-8CF8-00FEB0619A47"}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smklog-0.1.6.tar.gz (4.1 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page