Skip to content

Commit

Permalink
feat: expose logger API (#132)
Browse files Browse the repository at this point in the history
set to ERROR level by default
expose API to set and get log level and get log level enums
expose convenience method to set logger level via global window param window.PLAYKIT_LOG_LEVEL
update to JS-Logger V1.4
  • Loading branch information
OrenMe authored and Dan Ziv committed Nov 14, 2017
1 parent 96c5893 commit 252e9d2
Show file tree
Hide file tree
Showing 8 changed files with 280 additions and 205 deletions.
352 changes: 199 additions & 153 deletions dist/playkit-ui.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/playkit-ui.js.map

Large diffs are not rendered by default.

7 changes: 0 additions & 7 deletions dist/playkit-ui.min.js

This file was deleted.

1 change: 0 additions & 1 deletion dist/playkit-ui.min.js.map

This file was deleted.

4 changes: 2 additions & 2 deletions src/components/base.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//@flow
import { Component } from 'preact';
import Player from 'playkit-js';
import LoggerFactory from '../utils/logger';
import getLogger from '../utils/logger';

/**
* Base component to be extended by other player UI components
Expand All @@ -27,7 +27,7 @@ class BaseComponent extends Component {
this.name = obj.name;
this.player = obj.player;
this.config = obj.config;
this.logger = LoggerFactory.getLogger(`UI ${this.name}`);
this.logger = getLogger(`UI ${this.name}`);
this.logger.debug(`Initialized`);
}
}
Expand Down
52 changes: 44 additions & 8 deletions src/ui-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import {h, render} from 'preact';
import {Provider} from 'preact-redux';
import {IntlProvider} from 'preact-i18n';
import {createStore} from 'redux';
import {LogLevel, getLogLevel, setLogLevel} from './utils/logger'


import reducer from './store';
import definition from './fr.json';
Expand Down Expand Up @@ -48,6 +50,9 @@ class UIManager {
constructor(player: Player, config: Object) {
this.player = player;
this.config = config;
if (config.logLevel && this.LogLevel[config.logLevel]) {
setLogLevel(this.LogLevel[config.logLevel]);
}
}

/**
Expand All @@ -58,9 +63,9 @@ class UIManager {
*/
buildDefaultUI(): void {
const uis = [
{ template: props => adsUI(props), condition: state => state.engine.adBreak },
{ template: props => liveUI(props), condition: state => state.engine.isLive },
{ template: props => playbackUI(props) }
{template: props => adsUI(props), condition: state => state.engine.adBreak},
{template: props => liveUI(props), condition: state => state.engine.isLive},
{template: props => playbackUI(props)}
];
this._buildUI(uis);
}
Expand All @@ -77,7 +82,7 @@ class UIManager {
this._buildUI(uis);
}
else {
let fallbackUIs = [{ template: props => playbackUI(props) }];
let fallbackUIs = [{template: props => playbackUI(props)}];
this._buildUI(fallbackUIs);
}
}
Expand All @@ -93,16 +98,19 @@ class UIManager {
if (!this.player) return;

// define the store and devtools for redux
const store = createStore(reducer, window.devToolsExtension && window.devToolsExtension({ name: `playkit #${this.config.target}`, instanceId: this.config.target }));
const store = createStore(reducer, window.devToolsExtension && window.devToolsExtension({
name: `playkit #${this.config.target}`,
instanceId: this.config.target
}));

// i18n, redux and initial player-to-store connector setup
const template = (
<Provider store={store}>
<IntlProvider definition={definition}>
<Shell player={this.player}>
<EngineConnector player={this.player} />
<VideoPlayer player={this.player} />
<PlayerGUI uis={uis} player={this.player} config={this.config} />
<EngineConnector player={this.player}/>
<VideoPlayer player={this.player}/>
<PlayerGUI uis={uis} player={this.player} config={this.config}/>
</Shell>
</IntlProvider>
</Provider>
Expand All @@ -113,6 +121,34 @@ class UIManager {
render(template, container);
}

/**
* Get the player log level.
* @returns {Object} - The log levels of the player.
* @public
*/
get LogLevel(): { [level: string]: Object } {
return LogLevel;
}

/**
* get the log level
* @param {?string} name - the logger name
* @returns {Object} - the log level
*/
getLogLevel(name?: string): Object {
return getLogLevel(name);
}

/**
* sets the logger level
* @param {Object} level - the log level
* @param {?string} name - the logger name
* @returns {void}
*/
setLogLevel(level: Object, name?: string) {
setLogLevel(level, name);
}

}

export default UIManager;
Expand Down
57 changes: 29 additions & 28 deletions src/utils/logger.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
//@flow
import * as JsLogger from 'js-logger';

const LOG_LEVEL: { [level: string]: Object } = {
const LogLevel: { [level: string]: Object } = {
"DEBUG": JsLogger.DEBUG,
"INFO": JsLogger.INFO,
"TIME": JsLogger.TIME,
Expand All @@ -10,37 +10,38 @@ const LOG_LEVEL: { [level: string]: Object } = {
"OFF": JsLogger.OFF
};

JsLogger.useDefaults({defaultLevel: JsLogger.ERROR});

/**
* LoggerFactory
*
* @class LoggerFactory
* get a logger
* @param {?string} name - the logger name
* @returns {Object} - the logger class
*/
class LoggerFactory {
/**
* Creates an instance of LoggerFactory.
* @param {Object} [options] options
* @memberof LoggerFactory
*/
constructor(options?: Object) {
JsLogger.useDefaults(options || {});
function getLogger(name?: string): Object {
if (!name) {
return JsLogger;
}
return JsLogger.get(name);
}

/**
* getLogger
*
* @param {string} [name] name
* @returns {*} - logger
* @memberof LoggerFactory
*/
getLogger(name?: string) {
if (!name) {
return JsLogger;
}
return JsLogger.get(name);
}
/**
* get the log level
* @param {?string} name - the logger name
* @returns {Object} - the log level
*/
function getLogLevel(name?: string): Object {
return getLogger(name).getLevel();
}

const lf = new LoggerFactory({defaultLevel: JsLogger.DEBUG});
/**
* sets the logger level
* @param {Object} level - the log level
* @param {?string} name - the logger name
* @returns {void}
*/
function setLogLevel(level: Object, name?: string): void {
getLogger(name).setLevel(level);
}

export default lf;
export {LOG_LEVEL};
export default getLogger;
export {LogLevel, getLogLevel, setLogLevel};
10 changes: 5 additions & 5 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3440,8 +3440,8 @@ js-base64@^2.1.8, js-base64@^2.1.9:
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"

js-logger@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/js-logger/-/js-logger-1.3.0.tgz#de1a1143242710f7ce4da20408348a2a93ebf34d"
version "1.4.1"
resolved "https://registry.yarnpkg.com/js-logger/-/js-logger-1.4.1.tgz#f0230dc5e84e120f213d6e5a6b767a913d290335"

js-tokens@^3.0.0:
version "3.0.2"
Expand Down Expand Up @@ -4574,9 +4574,9 @@ pkg-dir@^1.0.0:
dependencies:
find-up "^1.0.0"

"playkit-js@https://github.com/kaltura/playkit-js.git#0.14.1":
version "0.14.1"
resolved "https://github.com/kaltura/playkit-js.git#4619c987be772a97ac0af8ae860556197e4f9f61"
"playkit-js@https://github.com/kaltura/playkit-js.git#v0.16.0":
version "0.16.0"
resolved "https://github.com/kaltura/playkit-js.git#558a97d875f8ede3166a6abf113e314a1a0a150d"
dependencies:
js-logger "^1.3.0"
ua-parser-js "^0.7.13"
Expand Down

0 comments on commit 252e9d2

Please sign in to comment.