LogMetrics framework for Microservices (Python) — part 2
Tags: python, flask, logmetrics, devxchange
Published: 2020-09-10 02:56:23

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/q7b59wz94vu2oioyhxbo.png)

LogMetrics provides simplified configuration to log payload for python flask projects.

**Pypi Package**

`https://pypi.org/project/logmetrics-sdk/`

![1*pfTVSJz2mdxOGDR-VmbHwQ](https://dev-to-uploads.s3.amazonaws.com/i/ys08mj52p26eeu1xw2y1.png)
  
**Install Dependencies**

`pip install logmetrics-sdk`

**Properties**
```
enable_logmetrics= True
enable_frontend_request= True
enable_frontend_response= True
enable_backend= True
enable_backend_request= True
enable_backend_response= True
```

**Usage — Python Flask Projects**

```
from logmetrics_sdk.logmetrics import LogMetrics

@app.route('/todo/api/v1/tasks', methods=['GET'])
@LogMetrics(enable_logmetrics=True,
            enable_frontend_request=True,
            enable_frontend_response=True,
            enable_backend=True,
            enable_backend_request=True,
            enable_backend_response=True)
def get_tasks():
    return jsonify(tasks)
```

**LogMetrics Schema**

```
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "LogMetrics",
  "properties": {
    "Node": {
      "type": "string",
      "description": "Application Host IP Address"
    },
    "MessageType": {
      "type": "string",
      "description": "Logmetrics message type",
      "value": "LOGMETRICS_MESSAGE"
    },
    "Duration": {
      "type": "integer",
      "description": "Response time of the API"
    },
    "Host": {
      "type": "string",
      "description": "Application Host Name"
    },
    "Fault": {
      "type": "boolean",
      "description": "API Success or Failed status "
    },
    "Method": {
      "type": "string",
      "description": "API Method name"
    },
    "ResponseBody": {
      "type": "string",
      "description": "API Response Body"
    },
    "StartDateTime": {
      "type": "string",
      "description": "API Start Time"
    },
    "EndDateTime": {
      "type": "string",
      "description": "API End time"
    },
    "HttpMethod": {
      "type": "string",
      "description": "Http Method Type"
    },
    "RequestBody": {
      "type": "string",
      "description": "API Request Body"
    }
  }
}
```

**Sample logmetrics message**

```
{
  "Node": "127.0.0.1",
  "MessageType": "LOGMETRICS_MESSAGE",
  "Duration": 106,
  "Host": "hostname",
  "Fault": false,
  "Method": "/user-service/api/v1/user/{id}",
  "ResponseBody": "{\"id\":1,\"name\":\"02adcec2263d2127269fcd769c33f029\",\"age\":\"35135aaa6cc23891b40cb3f378c53a17a1127210ce60e125ccf03efcfdaec458\",\"salary\":\"********\"}",
  "StartDateTime": "Tue Nov 26 23:22:54 EST 2019",
  "EndDateTime": "Tue Nov 26 23:22:54 EST 2019",
  "HttpMethod": "GET",
  "RequestBody": ""
}
```

**Release History**

1.0.3
* logging rest verb & payload to console.
* feature to enable/disable payload logging

**Demo Project**

[LINK](https://github.com/devxchangeio-blog/logmetrics-python-demo)

**Want to Contribute to LogMetrics framework?**

[LINK](https://github.com/devxchangeio/logmetrics-python)
1. Fork it!
2. Create your feature branch: git checkout -b my-new-feature
3. Commit your changes: git commit -am 'Add some feature'
4. Push to the branch: git push origin my-new-feature
5. Submit a pull request :D