pbu-log-inspector
v0.0.6
Published
React components for fetching and displaying logs from a Flask backend using the pbu-log-inspector pip package
Downloads
1
Readme
PBU Log Inspector
Flask (pip) and React (npm) integration for python-basic-utils logs.
Installation
pip3 install pbu-log-inspector
npm install pbu-log-inspector
Integration
Backend
from flask import Flask
from loginspect import register_endpoint
app = Flask(__name__)
register_endpoint(app)
app.run(host="0.0.0.0", port=5444)
The register_endpoint
function will register an endpoint GET /api/_logs
, which will can be used to serve daily logs.
There are additional parameters available for this function:
register_endpoint(app, log_folder="_logs", api_prefix="/api", log_file_mapping=None, login_check=None)
- The default
log_folder
is relative to the start script of your application, since that is thepbu
default. - If you provide a different
api_prefix
this will just be the prefix, not the/_logs
part. E.g./rest
would result in an endpoint/rest/_logs
- The
log_file_mapping
is optional and only necessary, if you instructedpbu
to write to different file names than the defaults. When provided, the mapping needs to provide a dictionary with keys representing the default pbu log file names (info.log, debug.log, warning.log, error.log) and their respective values are the name of the log file in your app. - If your application includes authentication, provide a function via the
login_check
parameter that performs the authentication. No parameters are passed to the function. You can usefrom flask import request
and access all request data
Restrictions
- The date needs to be the first part of a log message
- The date needs to be in the format
%Y-%m-%d %H:%M:%S.%s
, e.g.2019-12-25 13:37:01.567
- There is no limit on how many logs the endpoint delivers. This can easily cause large payloads and potentially exceed operational limits (e.g. browser performance, response size, ...)
Frontend
import React from "react"
import LogInspectorContainer from "pbu-log-inspector"
const MyContainer = props => (
<div>
<LogInspectorContainer />
</div>
)
The container provides the following properties:
apiPrefix
- default"/api"
- corresponds to theapi_prefix
parameter configured on the Flask backendapplyRequestOptions
- defaultnull
- a function that takes the base request parameters and has to return the parameters for the fetch request, in case authentication is required and headers need to be seterrorHandler
- defaultnull
- a function to handle an error during fetching logs (e.g. show an alert), noreturn
is expected. The parameter is the error thrown.