Display logs
The following React example retrieves and displays log information.
The following React example retrieves and displays log information.
import React from "react"; import ReactDOM from "react-dom"; import LogViewer from "./LogViewer"; export default function createExternalRoot(container: HTMLElement) { return { render(props: { options: { entityId: number }; config: { header_label: string; log_types: Array<{ name: string; label: string }>; }; }) { ReactDOM.render( props.config.log_types.map((logType) => ( <LogViewer entityId={props.options.entityId ?? 0} logType={logType.name ?? ""} logLabel={logType.label ?? ""} /> )), container ); }, unmount() { ReactDOM.unmountComponentAtNode(container); }, }; }
{ "log_types": [ { "name": "asset.download.completed", "label": "Number of downloads: " }, { "name": "publiclink.requested", "label": "Number of public link views: " } ], "header_label": "Report Data" }
import React, { useEffect, useState } from "react"; interface logViewerProps { entityId: number; logType: string; logLabel: string; } const LogViewer: React.FunctionComponent<logViewerProps> = ({ entityId, logType, logLabel, }) => { const [numberOfResults, setNumberOfResults] = useState<number>(0); useEffect(() => { const getAuditInfo = async (): Promise<void> => { const response = await fetch( `${document.location.origin}/api/audit/business/query?logType=reportingeventslog&fullText=${logType}%20${entityId}&skip=0&take=10&sort=timestamp&order=desc` ); const logsInfo: { total_items: number } = await response.json(); setNumberOfResults(logsInfo.total_items); }; if (entityId && logType && logLabel) { void getAuditInfo(); } }, [entityId]); return ( <> <h3> {logLabel} <em>{numberOfResults}</em> </h3> </> ); }; export default LogViewer;