aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2020-03-26 20:35:06 +0530
committerFlorian Dold <florian.dold@gmail.com>2020-03-26 20:35:06 +0530
commit3d0fbea4671f5a4a35f29445fbf10e3138f49229 (patch)
tree14dcaa68f62b049583b14e0b9822d67fa479e43b
parentccdc7cffed3ba784c8fd65e0779cd0807a53d39f (diff)
log to stderr when running on node
-rw-r--r--src/util/logging.ts66
-rw-r--r--src/webex/compat.ts7
2 files changed, 68 insertions, 5 deletions
diff --git a/src/util/logging.ts b/src/util/logging.ts
index 4560105f4..80ba344d5 100644
--- a/src/util/logging.ts
+++ b/src/util/logging.ts
@@ -14,18 +14,74 @@
TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
+/**
+ * Imports.
+ */
+import { isNode } from "../webex/compat";
+
+function writeNodeLog(
+ message: string,
+ tag: string,
+ level: string,
+ args: any[],
+) {
+ process.stderr.write(`${new Date().toISOString()} ${tag} ${level} `);
+ process.stderr.write(message);
+ if (args.length != 0) {
+ process.stderr.write(" ");
+ process.stderr.write(JSON.stringify(args, undefined, 2));
+ }
+ process.stderr.write("\n");
+}
+
+/**
+ * Logger that writes to stderr when running under node,
+ * and uses the corresponding console.* method to log in the browser.
+ */
export class Logger {
constructor(private tag: string) {}
+
info(message: string, ...args: any[]) {
- console.log(`${new Date().toISOString()} ${this.tag} INFO ` + message, ...args);
+ if (isNode()) {
+ writeNodeLog(message, this.tag, "INFO", args);
+ } else {
+ console.info(
+ `${new Date().toISOString()} ${this.tag} INFO ` + message,
+ ...args,
+ );
+ }
}
+
warn(message: string, ...args: any[]) {
- console.log(`${new Date().toISOString()} ${this.tag} WARN ` + message, ...args);
+ if (isNode()) {
+ writeNodeLog(message, this.tag, "WARN", args);
+ } else {
+ console.warn(
+ `${new Date().toISOString()} ${this.tag} INFO ` + message,
+ ...args,
+ );
+ }
}
+
error(message: string, ...args: any[]) {
- console.log(`${new Date().toISOString()} ${this.tag} ERROR ` + message, ...args);
+ if (isNode()) {
+ writeNodeLog(message, this.tag, "ERROR", args);
+ } else {
+ console.info(
+ `${new Date().toISOString()} ${this.tag} ERROR ` + message,
+ ...args,
+ );
+ }
}
+
trace(message: any, ...args: any[]) {
- console.log(`${new Date().toISOString()} ${this.tag} TRACE ` + message, ...args)
+ if (isNode()) {
+ writeNodeLog(message, this.tag, "TRACE", args);
+ } else {
+ console.info(
+ `${new Date().toISOString()} ${this.tag} TRACE ` + message,
+ ...args,
+ );
+ }
}
-} \ No newline at end of file
+}
diff --git a/src/webex/compat.ts b/src/webex/compat.ts
index 65ddfab4a..121c58e7f 100644
--- a/src/webex/compat.ts
+++ b/src/webex/compat.ts
@@ -26,3 +26,10 @@ export function isFirefox(): boolean {
}
return false;
}
+
+/**
+ * Check if we are running under nodejs.
+ */
+export function isNode() {
+ return (typeof process !== 'undefined') && (process.release.name === 'node')
+} \ No newline at end of file