|
1 | 1 | // Code Loading Library |
2 | | -// Copyright (c) 2016 - 2017 Sport Trades Ltd, (c) 2020 Jaskirat Rajasansir |
| 2 | +// Copyright (c) 2016 - 2017 Sport Trades Ltd, (c) 2020 - 2021 Jaskirat Rajasansir |
3 | 3 |
|
4 | 4 | // Documentation: https://github.com/BuaBook/kdb-common/wiki/require.q |
5 | 5 |
|
|
22 | 22 | / Required interface implementations for 'require' and related kdb-common libraries to function correctly |
23 | 23 | .require.interfaces:`lib`ifFunc xkey flip `lib`ifFunc`implFunc!"SS*"$\:(); |
24 | 24 | .require.interfaces[``]:(::); |
25 | | -.require.interfaces[`log`.log.if.trace]:-1; |
26 | | -.require.interfaces[`log`.log.if.debug]:-1; |
27 | | -.require.interfaces[`log`.log.if.info]: -1; |
28 | | -.require.interfaces[`log`.log.if.warn]: -1; |
29 | | -.require.interfaces[`log`.log.if.error]:-2; |
30 | | -.require.interfaces[`log`.log.if.fatal]:-2; |
| 25 | +.require.interfaces[`log`.log.if.trace]:`.require.i.log; |
| 26 | +.require.interfaces[`log`.log.if.debug]:`.require.i.log; |
| 27 | +.require.interfaces[`log`.log.if.info]: `.require.i.log; |
| 28 | +.require.interfaces[`log`.log.if.warn]: `.require.i.log; |
| 29 | +.require.interfaces[`log`.log.if.error]:`.require.i.logE; |
| 30 | +.require.interfaces[`log`.log.if.fatal]:`.require.i.logE; |
31 | 31 |
|
32 | 32 |
|
33 | 33 | .require.init:{[root] |
|
44 | 44 | .require.i.setDefaultInterfaces[]; |
45 | 45 |
|
46 | 46 | (.require.markLibAsLoaded;.require.markLibAsInited)@\:`require; |
47 | | - |
| 47 | + |
48 | 48 | / If file tree has already been specified, don't overwrite |
49 | 49 | if[.require.location.discovered~enlist`; |
50 | 50 | .require.rescanRoot[]; |
|
57 | 57 |
|
58 | 58 |
|
59 | 59 | / Loads the specified library but does not initialise it. Useful if there is some configuration |
60 | | -/ to perform after load, but prior to initialisation. When you are ready to to initialise, |
| 60 | +/ to perform after load, but prior to initialisation. When you are ready to to initialise, |
61 | 61 | / use .require.lib. |
62 | 62 | / @see .require.i.load |
63 | 63 | .require.libNoInit:{[lib] |
|
126 | 126 | '"LibraryLoadException"; |
127 | 127 | ]; |
128 | 128 | } each 1_/:string libFiles; |
129 | | - |
| 129 | + |
130 | 130 | .require.markLibAsLoaded lib; |
131 | 131 | .require.loadedLibs[lib]:enlist[`files]!enlist libFiles; |
132 | 132 | }; |
|
163 | 163 | .log.if.error "Init function (",string[initFname],") failed to execute successfully [ Lib: ",string[lib]," ]. Error - ",last initRes; |
164 | 164 | '"LibraryInitFailedException (",string[initFname],")"; |
165 | 165 | ]; |
166 | | - |
| 166 | + |
167 | 167 | .require.markLibAsInited lib; |
168 | 168 |
|
169 | 169 | .log.if.info "Initialised library: ",string lib; |
|
219 | 219 |
|
220 | 220 | .require.lib`if; |
221 | 221 | }; |
| 222 | + |
| 223 | +/ Supports slf4j-style parameterised logging for improved logging performance even without a logging library |
| 224 | +/ @param (String|List) If a generic list is provided, assume parameterised and replace "{}" in the message (first element) |
| 225 | +/ @returns (String) The message with "{}" replaced with the values supplied after the message |
| 226 | +.require.i.parameterisedLog:{[message] |
| 227 | + if[0h = type message; |
| 228 | + message:"" sv ("{}" vs first message),'(.Q.s1 each 1_ message),enlist ""; |
| 229 | + ]; |
| 230 | + |
| 231 | + :message; |
| 232 | + }; |
| 233 | + |
| 234 | +/ Standard out logger |
| 235 | +.require.i.log: ('[-1; .require.i.parameterisedLog]) |
| 236 | + |
| 237 | +/ Standard error logger |
| 238 | +.require.i.logE:('[-2; .require.i.parameterisedLog]); |
0 commit comments