Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F95259388
logger.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Dec 14, 04:23
Size
3 KB
Mime Type
text/x-c++
Expires
Mon, Dec 16, 04:23 (2 d)
Engine
blob
Format
Raw Data
Handle
22924310
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
logger.js
View Options
"use strict"
;
/* eslint-disable prefer-rest-params */
Object
.
defineProperty
(
exports
,
"__esModule"
,
{
value
:
true
});
exports
.
getArrow
=
exports
.
getInstance
=
void
0
;
const
util
=
require
(
"util"
);
let
loggerInstance
;
const
defaultProvider
=
{
// tslint:disable: no-console
log
:
console
.
log
,
debug
:
console
.
log
,
info
:
console
.
info
,
warn
:
console
.
warn
,
error
:
console
.
error
,
};
// log level 'weight'
var
LEVELS
;
(
function
(
LEVELS
)
{
LEVELS
[
LEVELS
[
"debug"
]
=
10
]
=
"debug"
;
LEVELS
[
LEVELS
[
"info"
]
=
20
]
=
"info"
;
LEVELS
[
LEVELS
[
"warn"
]
=
30
]
=
"warn"
;
LEVELS
[
LEVELS
[
"error"
]
=
50
]
=
"error"
;
LEVELS
[
LEVELS
[
"silent"
]
=
80
]
=
"silent"
;
})(
LEVELS
||
(
LEVELS
=
{}));
function
getInstance
()
{
if
(
!
loggerInstance
)
{
loggerInstance
=
new
Logger
();
}
return
loggerInstance
;
}
exports
.
getInstance
=
getInstance
;
class
Logger
{
constructor
()
{
this
.
setLevel
(
'info'
);
this
.
setProvider
(()
=>
defaultProvider
);
}
// log will log messages, regardless of logLevels
log
()
{
this
.
provider
.
log
(
this
.
_interpolate
.
apply
(
null
,
arguments
));
}
debug
()
{
if
(
this
.
_showLevel
(
'debug'
))
{
this
.
provider
.
debug
(
this
.
_interpolate
.
apply
(
null
,
arguments
));
}
}
info
()
{
if
(
this
.
_showLevel
(
'info'
))
{
this
.
provider
.
info
(
this
.
_interpolate
.
apply
(
null
,
arguments
));
}
}
warn
()
{
if
(
this
.
_showLevel
(
'warn'
))
{
this
.
provider
.
warn
(
this
.
_interpolate
.
apply
(
null
,
arguments
));
}
}
error
()
{
if
(
this
.
_showLevel
(
'error'
))
{
this
.
provider
.
error
(
this
.
_interpolate
.
apply
(
null
,
arguments
));
}
}
setLevel
(
v
)
{
if
(
this
.
isValidLevel
(
v
))
{
this
.
logLevel
=
v
;
}
}
setProvider
(
fn
)
{
if
(
fn
&&
this
.
isValidProvider
(
fn
))
{
this
.
provider
=
fn
(
defaultProvider
);
}
}
isValidProvider
(
fnProvider
)
{
const
result
=
true
;
if
(
fnProvider
&&
typeof
fnProvider
!==
'function'
)
{
throw
new
Error
(
'[HPM] Log provider config error. Expecting a function.'
);
}
return
result
;
}
isValidLevel
(
levelName
)
{
const
validLevels
=
Object
.
keys
(
LEVELS
);
const
isValid
=
validLevels
.
includes
(
levelName
);
if
(
!
isValid
)
{
throw
new
Error
(
'[HPM] Log level error. Invalid logLevel.'
);
}
return
isValid
;
}
/**
* Decide to log or not to log, based on the log levels 'weight'
* @param {String} showLevel [debug, info, warn, error, silent]
* @return {Boolean}
*/
_showLevel
(
showLevel
)
{
let
result
=
false
;
const
currentLogLevel
=
LEVELS
[
this
.
logLevel
];
if
(
currentLogLevel
&&
currentLogLevel
<=
LEVELS
[
showLevel
])
{
result
=
true
;
}
return
result
;
}
// make sure logged messages and its data are return interpolated
// make it possible for additional log data, such date/time or custom prefix.
_interpolate
(
format
,
...
args
)
{
const
result
=
util
.
format
(
format
,
...
args
);
return
result
;
}
}
/**
* -> normal proxy
* => router
* ~> pathRewrite
* ≈> router + pathRewrite
*
* @param {String} originalPath
* @param {String} newPath
* @param {String} originalTarget
* @param {String} newTarget
* @return {String}
*/
function
getArrow
(
originalPath
,
newPath
,
originalTarget
,
newTarget
)
{
const
arrow
=
[
'>'
];
const
isNewTarget
=
originalTarget
!==
newTarget
;
// router
const
isNewPath
=
originalPath
!==
newPath
;
// pathRewrite
if
(
isNewPath
&&
!
isNewTarget
)
{
arrow
.
unshift
(
'~'
);
}
else
if
(
!
isNewPath
&&
isNewTarget
)
{
arrow
.
unshift
(
'='
);
}
else
if
(
isNewPath
&&
isNewTarget
)
{
arrow
.
unshift
(
'≈'
);
}
else
{
arrow
.
unshift
(
'-'
);
}
return
arrow
.
join
(
''
);
}
exports
.
getArrow
=
getArrow
;
Event Timeline
Log In to Comment