Skip to content

Commit feadb0e

Browse files
committed
require: Add support for slf4j-style parameterised messages in basic logger
1 parent 232e2db commit feadb0e

File tree

1 file changed

+28
-11
lines changed

1 file changed

+28
-11
lines changed

src/require.q

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// 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
33

44
// Documentation: https://github.com/BuaBook/kdb-common/wiki/require.q
55

@@ -22,12 +22,12 @@
2222
/ Required interface implementations for 'require' and related kdb-common libraries to function correctly
2323
.require.interfaces:`lib`ifFunc xkey flip `lib`ifFunc`implFunc!"SS*"$\:();
2424
.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;
3131

3232

3333
.require.init:{[root]
@@ -44,7 +44,7 @@
4444
.require.i.setDefaultInterfaces[];
4545

4646
(.require.markLibAsLoaded;.require.markLibAsInited)@\:`require;
47-
47+
4848
/ If file tree has already been specified, don't overwrite
4949
if[.require.location.discovered~enlist`;
5050
.require.rescanRoot[];
@@ -57,7 +57,7 @@
5757

5858

5959
/ 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,
6161
/ use .require.lib.
6262
/ @see .require.i.load
6363
.require.libNoInit:{[lib]
@@ -126,7 +126,7 @@
126126
'"LibraryLoadException";
127127
];
128128
} each 1_/:string libFiles;
129-
129+
130130
.require.markLibAsLoaded lib;
131131
.require.loadedLibs[lib]:enlist[`files]!enlist libFiles;
132132
};
@@ -163,7 +163,7 @@
163163
.log.if.error "Init function (",string[initFname],") failed to execute successfully [ Lib: ",string[lib]," ]. Error - ",last initRes;
164164
'"LibraryInitFailedException (",string[initFname],")";
165165
];
166-
166+
167167
.require.markLibAsInited lib;
168168

169169
.log.if.info "Initialised library: ",string lib;
@@ -219,3 +219,20 @@
219219

220220
.require.lib`if;
221221
};
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

Comments
 (0)