Unify log api.
This commit is contained in:
parent
22f2c7c600
commit
c226486d05
42
packages/console-app/src/components/LogPoller.js
Normal file
42
packages/console-app/src/components/LogPoller.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2020 DxOS.org
|
||||||
|
//
|
||||||
|
|
||||||
|
import React, { useContext } from 'react';
|
||||||
|
import { useQuery } from '@apollo/react-hooks';
|
||||||
|
|
||||||
|
import { ConsoleContext, useQueryStatusReducer } from '../hooks';
|
||||||
|
|
||||||
|
import Log from './Log';
|
||||||
|
|
||||||
|
const MAX_LINES = 1000;
|
||||||
|
const logBuffer = [];
|
||||||
|
|
||||||
|
const LogPoller = ({ service, query }) => {
|
||||||
|
const { config } = useContext(ConsoleContext);
|
||||||
|
const data = useQueryStatusReducer(useQuery(query, {
|
||||||
|
pollInterval: config.api.intervalLog,
|
||||||
|
variables: { service, incremental: logBuffer.length !== 0 }
|
||||||
|
}));
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { incremental, lines } = JSON.parse(data.wns_log.json);
|
||||||
|
|
||||||
|
if (!incremental && lines.length) {
|
||||||
|
logBuffer.length = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
logBuffer.push(...lines);
|
||||||
|
if (logBuffer.length > MAX_LINES) {
|
||||||
|
logBuffer.splice(0, logBuffer.length - MAX_LINES);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Log log={logBuffer.slice(0)} />
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default LogPoller;
|
@ -1,46 +0,0 @@
|
|||||||
//
|
|
||||||
// Copyright 2020 DxOS.org
|
|
||||||
//
|
|
||||||
|
|
||||||
import React, { useContext } from 'react';
|
|
||||||
import { useQuery } from '@apollo/react-hooks';
|
|
||||||
|
|
||||||
import SIGNAL_LOG from '../../../gql/signal_log.graphql';
|
|
||||||
|
|
||||||
import { ConsoleContext } from '../../../hooks';
|
|
||||||
|
|
||||||
import Log from '../../../components/Log';
|
|
||||||
|
|
||||||
const MAX_LINES = 1000;
|
|
||||||
const logBuffer = [];
|
|
||||||
|
|
||||||
const SignalLog = () => {
|
|
||||||
const { config } = useContext(ConsoleContext);
|
|
||||||
const { data, refetch, startPolling, stopPolling } = useQuery(SIGNAL_LOG, {
|
|
||||||
variables: { incremental: false }
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!data) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { incremental, lines } = JSON.parse(data.signal_log.json);
|
|
||||||
|
|
||||||
if (!incremental) {
|
|
||||||
stopPolling();
|
|
||||||
refetch({ incremental: true });
|
|
||||||
startPolling(config.api.intervalLog);
|
|
||||||
}
|
|
||||||
|
|
||||||
logBuffer.push(...lines);
|
|
||||||
if (logBuffer.length > MAX_LINES) {
|
|
||||||
logBuffer.splice(0, logBuffer.length - MAX_LINES);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Log log={logBuffer.slice(0)} />
|
|
||||||
);
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
export default SignalLog;
|
|
@ -9,11 +9,13 @@ import Tab from '@material-ui/core/Tab';
|
|||||||
import Tabs from '@material-ui/core/Tabs';
|
import Tabs from '@material-ui/core/Tabs';
|
||||||
import TabContext from '@material-ui/lab/TabContext';
|
import TabContext from '@material-ui/lab/TabContext';
|
||||||
|
|
||||||
|
import SIGNAL_LOG from '../../../gql/logs.graphql';
|
||||||
|
|
||||||
import Panel from '../../../components/Panel';
|
import Panel from '../../../components/Panel';
|
||||||
import Toolbar from '../../../components/Toolbar';
|
import Toolbar from '../../../components/Toolbar';
|
||||||
|
|
||||||
import SignalLog from './SignalLog';
|
|
||||||
import SignalStatus from './SignalStatus';
|
import SignalStatus from './SignalStatus';
|
||||||
|
import LogPoller from "../../../components/LogPoller";
|
||||||
|
|
||||||
const TAB_STATUS = 'status';
|
const TAB_STATUS = 'status';
|
||||||
const TAB_LOG = 'log';
|
const TAB_LOG = 'log';
|
||||||
@ -62,7 +64,7 @@ const Signal = () => {
|
|||||||
|
|
||||||
{tab === TAB_LOG && (
|
{tab === TAB_LOG && (
|
||||||
<div className={classes.panel}>
|
<div className={classes.panel}>
|
||||||
<SignalLog />
|
<LogPoller query={SIGNAL_LOG} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</TabContext>
|
</TabContext>
|
||||||
|
@ -9,10 +9,12 @@ import Tab from '@material-ui/core/Tab';
|
|||||||
import Tabs from '@material-ui/core/Tabs';
|
import Tabs from '@material-ui/core/Tabs';
|
||||||
import TabContext from '@material-ui/lab/TabContext';
|
import TabContext from '@material-ui/lab/TabContext';
|
||||||
|
|
||||||
|
import WNS_LOG from '../../../gql/wns_log.graphql';
|
||||||
|
|
||||||
|
import LogPoller from "../../../components/LogPoller";
|
||||||
import Panel from '../../../components/Panel';
|
import Panel from '../../../components/Panel';
|
||||||
import Toolbar from '../../../components/Toolbar';
|
import Toolbar from '../../../components/Toolbar';
|
||||||
|
|
||||||
import WNSLog from './WNSLog';
|
|
||||||
import WNSRecords, { WNSRecordType } from './WNSRecords';
|
import WNSRecords, { WNSRecordType } from './WNSRecords';
|
||||||
import WNSStatus from './WNSStatus';
|
import WNSStatus from './WNSStatus';
|
||||||
|
|
||||||
@ -76,7 +78,7 @@ const WNS = () => {
|
|||||||
|
|
||||||
{tab === TAB_LOG && (
|
{tab === TAB_LOG && (
|
||||||
<div className={classes.panel}>
|
<div className={classes.panel}>
|
||||||
<WNSLog />
|
<LogPoller query={WNS_LOG} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</TabContext>
|
</TabContext>
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
//
|
|
||||||
// Copyright 2020 DxOS.org
|
|
||||||
//
|
|
||||||
|
|
||||||
import React, { useContext } from 'react';
|
|
||||||
import { useQuery } from '@apollo/react-hooks';
|
|
||||||
|
|
||||||
import WNS_LOG from '../../../gql/wns_log.graphql';
|
|
||||||
|
|
||||||
import { ConsoleContext } from '../../../hooks';
|
|
||||||
|
|
||||||
import Log from '../../../components/Log';
|
|
||||||
|
|
||||||
const MAX_LINES = 1000;
|
|
||||||
const logBuffer = [];
|
|
||||||
|
|
||||||
const WNSLog = () => {
|
|
||||||
const { config } = useContext(ConsoleContext);
|
|
||||||
const { data, refetch, startPolling, stopPolling } = useQuery(WNS_LOG, {
|
|
||||||
variables: { incremental: false }
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!data) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { incremental, lines } = JSON.parse(data.signal_log.json);
|
|
||||||
|
|
||||||
if (!incremental) {
|
|
||||||
stopPolling();
|
|
||||||
refetch({ incremental: true });
|
|
||||||
startPolling(config.api.intervalLog);
|
|
||||||
}
|
|
||||||
|
|
||||||
logBuffer.push(...lines);
|
|
||||||
if (logBuffer.length > MAX_LINES) {
|
|
||||||
logBuffer.splice(0, logBuffer.length - MAX_LINES);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Log log={logBuffer.slice(0)} />
|
|
||||||
);
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
export default WNSLog;
|
|
10
packages/console-app/src/gql/logs.graphql
Normal file
10
packages/console-app/src/gql/logs.graphql
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#
|
||||||
|
# Copyright 2020 DxOS.org
|
||||||
|
#
|
||||||
|
|
||||||
|
query ($service: String!, $incremental: Boolean) {
|
||||||
|
logs(service: $service, incremental: $incremental) {
|
||||||
|
timestamp
|
||||||
|
json
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +0,0 @@
|
|||||||
#
|
|
||||||
# Copyright 2020 DxOS.org
|
|
||||||
#
|
|
||||||
|
|
||||||
query ($incremental: Boolean) {
|
|
||||||
signal_log(incremental: $incremental) {
|
|
||||||
timestamp
|
|
||||||
json
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
#
|
|
||||||
# Copyright 2020 DxOS.org
|
|
||||||
#
|
|
||||||
|
|
||||||
query($incremental: Boolean) {
|
|
||||||
wns_log(incremental: $incremental) {
|
|
||||||
timestamp
|
|
||||||
json
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"build": {
|
"build": {
|
||||||
"name": "@dxos/console-app",
|
"name": "@dxos/console-app",
|
||||||
"buildDate": "2020-06-10T22:43:33.469Z",
|
"buildDate": "2020-06-11T05:01:31.306Z",
|
||||||
"version": "1.0.0-beta.0"
|
"version": "1.0.0-beta.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,16 +13,12 @@ type JSONResult {
|
|||||||
#
|
#
|
||||||
|
|
||||||
type Query {
|
type Query {
|
||||||
app_log(incremental: Boolean): JSONResult!
|
logs(service: String!, incremental: Boolean): JSONResult!
|
||||||
app_status: JSONResult!
|
app_status: JSONResult!
|
||||||
ipfs_log(incremental: Boolean): JSONResult!
|
|
||||||
ipfs_status: JSONResult!
|
ipfs_status: JSONResult!
|
||||||
ipfs_swarm_log(incremental: Boolean): JSONResult!
|
|
||||||
ipfs_swarm_status: JSONResult!
|
ipfs_swarm_status: JSONResult!
|
||||||
signal_log(incremental: Boolean): JSONResult!
|
|
||||||
signal_status: JSONResult!
|
signal_status: JSONResult!
|
||||||
system_status: JSONResult!
|
system_status: JSONResult!
|
||||||
wns_log(incremental: Boolean): JSONResult!
|
|
||||||
wns_status: JSONResult!
|
wns_status: JSONResult!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,40 +53,12 @@ const getLogs = async (name, incremental = false, lines = 100) => {
|
|||||||
|
|
||||||
export const logResolvers = {
|
export const logResolvers = {
|
||||||
Query: {
|
Query: {
|
||||||
wns_log: async (_, { incremental }) => {
|
logs: async (_, { service, incremental }) => {
|
||||||
const lines = await getLogs('wns-lite', incremental);
|
const lines = await getLogs(service, incremental);
|
||||||
return {
|
return {
|
||||||
timestamp: new Date().toUTCString(),
|
timestamp: new Date().toUTCString(),
|
||||||
json: JSON.stringify({ incremental, lines })
|
json: JSON.stringify({ incremental, lines })
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
signal_log: async (_, { incremental }) => {
|
|
||||||
const lines = await getLogs('signal', incremental);
|
|
||||||
return {
|
|
||||||
timestamp: new Date().toUTCString(),
|
|
||||||
json: JSON.stringify({ incremental, lines })
|
|
||||||
};
|
|
||||||
},
|
|
||||||
ipfs_log: async (_, { incremental }) => {
|
|
||||||
const lines = await getLogs('ipfs', incremental);
|
|
||||||
return {
|
|
||||||
timestamp: new Date().toUTCString(),
|
|
||||||
json: JSON.stringify({ incremental, lines })
|
|
||||||
};
|
|
||||||
},
|
|
||||||
ipfs_swarm_log: async (_, { incremental }) => {
|
|
||||||
const lines = await getLogs('ipfs-swarm-connect', incremental);
|
|
||||||
return {
|
|
||||||
timestamp: new Date().toUTCString(),
|
|
||||||
json: JSON.stringify({ incremental, lines })
|
|
||||||
};
|
|
||||||
},
|
|
||||||
app_log: async (_, { incremental }) => {
|
|
||||||
const lines = await getLogs('app', incremental);
|
|
||||||
return {
|
|
||||||
timestamp: new Date().toUTCString(),
|
|
||||||
json: JSON.stringify({ incremental, lines })
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user