feat(logging): Store JS console logs in RTCStats.
With this commit JS console logs can optionally be sent to the RTCstats server for storage and processing. The functionality is off by default and can be enabled by setting to `true` the config.js option config.analytics.rtcstatsStoreLogs: false // off by default Obviously, if rtcstats is disabled/not configured nothing will be sent to the rtcstats backend, even if this setting is set to `true`. This commit also adds a config.js option that can be used to disable sending the logs back to callstats: config.callstatsStoreLogs: true // on by default Obviously, if callstats is disabled nothing would be sent in the first place, but if callstats is enabled and this new configuration parameter is set to `false`, then callstats will be kept active but no logs will be sent to callstats.
This commit is contained in:
parent
7dba5f8a7e
commit
289ece42df
|
@ -822,6 +822,7 @@ var config = {
|
||||||
// Application ID and Secret.
|
// Application ID and Secret.
|
||||||
// callStatsID: '',
|
// callStatsID: '',
|
||||||
// callStatsSecret: '',
|
// callStatsSecret: '',
|
||||||
|
// callstatsStoreLogs: true,
|
||||||
|
|
||||||
// The callstats initialize config params as described in the API:
|
// The callstats initialize config params as described in the API:
|
||||||
// https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret
|
// https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret
|
||||||
|
@ -958,6 +959,7 @@ var config = {
|
||||||
// PeerConnection states along with getStats metrics polled at the specified
|
// PeerConnection states along with getStats metrics polled at the specified
|
||||||
// interval.
|
// interval.
|
||||||
// rtcstatsEnabled: false,
|
// rtcstatsEnabled: false,
|
||||||
|
// rtcstatsStoreLogs: false,
|
||||||
|
|
||||||
// In order to enable rtcstats one needs to provide a endpoint url.
|
// In order to enable rtcstats one needs to provide a endpoint url.
|
||||||
// rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/,
|
// rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/,
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
/* eslint-disable lines-around-comment */
|
||||||
|
// @ts-ignore
|
||||||
|
import RTCStats from '../../rtcstats/RTCStats';
|
||||||
|
// @ts-ignore
|
||||||
|
import { canSendRtcstatsData } from '../../rtcstats/functions';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { getCurrentConference } from '../conference';
|
import { getCurrentConference } from '../conference';
|
||||||
|
|
||||||
|
@ -45,6 +50,38 @@ export default class JitsiMeetLogStorage {
|
||||||
return Boolean(conference);
|
return Boolean(conference);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether callstats logs storage is enabled.
|
||||||
|
*
|
||||||
|
* @returns {boolean} <tt>true</tt> when this storage can store logs to
|
||||||
|
* callstats, <tt>false</tt> otherwise.
|
||||||
|
*/
|
||||||
|
canStoreLogsCallstats() {
|
||||||
|
const { callstatsStoreLogs } = this.getState()['features/base/config'];
|
||||||
|
|
||||||
|
// The behavior prior to adding this configuration parameter, is to send logs to callstats (if callstats is
|
||||||
|
// enabled). So, in order to maintain backwards compatibility I set the default of this option to be true, i.e.
|
||||||
|
// if the config.callstatsStoreLogs is not set, the JS console logs will be sent to callstats (if callstats is
|
||||||
|
// enabled)
|
||||||
|
return callstatsStoreLogs || callstatsStoreLogs === undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks whether rtcstats logs storage is enabled.
|
||||||
|
*
|
||||||
|
* @returns {boolean} <tt>true</tt> when this storage can store logs to
|
||||||
|
* rtcstats, <tt>false</tt> otherwise.
|
||||||
|
*/
|
||||||
|
canStoreLogsRtcstats() {
|
||||||
|
|
||||||
|
const config = this.getState()['features/base/config'];
|
||||||
|
|
||||||
|
// Saving the logs in RTCStats is a new feature and so there is no prior behavior that needs to be maintained.
|
||||||
|
// That said, this is still experimental and needs to be rolled out gradually so we want this to be off by
|
||||||
|
// default.
|
||||||
|
return config?.analytics?.rtcstatsStoreLogs && canSendRtcstatsData(this.getState());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called by the <tt>LogCollector</tt> to store a series of log lines into
|
* Called by the <tt>LogCollector</tt> to store a series of log lines into
|
||||||
* batch.
|
* batch.
|
||||||
|
@ -54,6 +91,23 @@ export default class JitsiMeetLogStorage {
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
storeLogs(logEntries: Array<string|any>) {
|
storeLogs(logEntries: Array<string|any>) {
|
||||||
|
|
||||||
|
if (this.canStoreLogsCallstats()) {
|
||||||
|
this.storeLogsCallstats(logEntries);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.canStoreLogsRtcstats()) {
|
||||||
|
RTCStats.sendLogs(logEntries);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store the console logs in callstats (if callstats is enabled).
|
||||||
|
*
|
||||||
|
* @param {Array<string|any>} logEntries - The log entries to send to the rtcstats server.
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
storeLogsCallstats(logEntries: Array<string|any>) {
|
||||||
const conference = getCurrentConference(this.getState());
|
const conference = getCurrentConference(this.getState());
|
||||||
|
|
||||||
if (!conference || !conference.isCallstatsEnabled()) {
|
if (!conference || !conference.isCallstatsEnabled()) {
|
||||||
|
|
|
@ -85,6 +85,16 @@ class RTCStats {
|
||||||
this.trace && this.trace.identity('identity', null, identityData);
|
this.trace && this.trace.identity('identity', null, identityData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send console logs to rtcstats server.
|
||||||
|
*
|
||||||
|
* @param {Array<string|any>} logEntries - The log entries to send to the rtcstats server.
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
sendLogs(logEntries) {
|
||||||
|
this.trace && this.trace.statsEntry('logs', null, logEntries);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send dominant speaker data, the data will be processed by rtcstats-server and saved in the dump file.
|
* Send dominant speaker data, the data will be processed by rtcstats-server and saved in the dump file.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue