+ {events.map(e => (
+
+ {formatIsoDateTimeToHr(e.time)}
+ {paddedLevelLabel(e.level)}
+ {`${e.file}[${e.line}]`}
+ {e.message}
+
+ ))}
+
+ );
+};
+
+
+
+export default LogEventConsole;
\ No newline at end of file
diff --git a/interface/src/system/LogEventController.tsx b/interface/src/system/LogEventController.tsx
new file mode 100644
index 00000000..7a2d62a1
--- /dev/null
+++ b/interface/src/system/LogEventController.tsx
@@ -0,0 +1,49 @@
+import React from 'react';
+import Sockette from 'sockette';
+import { withSnackbar, WithSnackbarProps } from 'notistack';
+
+import { addAccessTokenParameter } from '../authentication';
+import { LogEvent } from './types';
+import { WEB_SOCKET_ROOT } from '../api/Env';
+import LogEventConsole from './LogEventConsole';
+
+const LOG_EVENT_WEB_SOCKET_URL = WEB_SOCKET_ROOT + "log";
+
+interface LogEventControllerState {
+ ws: Sockette;
+ events: LogEvent[];
+}
+
+class LogEventController extends React.Component