1. Examples

Display logs

The following React example retrieves and displays log information.

Example

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);
    },
  };
}

Returns

config.json

{
  "log_types": [
    {
      "name": "asset.download.completed",
      "label": "Number of downloads: "
    },
    {
      "name": "publiclink.requested",
      "label": "Number of public link views: "
    }
  ],
  "header_label": "Report Data"
}

LogViewer.tsx

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;
If you have suggestions for improving this article, let us know!