42 lines
860 B
JavaScript
42 lines
860 B
JavaScript
class Logger {
|
|
constructor() {
|
|
this._remote = false
|
|
}
|
|
|
|
log({ message, level, service }) {
|
|
console.info(
|
|
`%c${level}\n%c${service}\n%c${message}`,
|
|
'color: white; background-color: blue; font-weight: 800',
|
|
'color: grey',
|
|
'color: black'
|
|
)
|
|
|
|
if (!this._remote) {
|
|
return
|
|
}
|
|
|
|
this._log({ message, level, service })
|
|
}
|
|
|
|
setRemoteLogging(value) {
|
|
this._remote = value
|
|
}
|
|
|
|
_log({ message, level, service }) {
|
|
return new Promise((resolve, reject) => {
|
|
fetch('/track', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Accept': 'text/html, application/json',
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({ message, level, service, env: 'browser' })
|
|
})
|
|
.then(resolve)
|
|
.catch(reject)
|
|
})
|
|
}
|
|
}
|
|
|
|
export default new Logger()
|