mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Add LogMethods helper and use it for more JSON data in logs. Reduce unhelpful logging.
Summary: - Sharing, Client, DocClients, HostingStorageManager all include available info. - In HostingStorageManager, log numSteps and maxStepTimeMs, in case that helps debug SQLITE_BUSY problem. - Replace some action-bundle logging with a JSON version aggregating some info. - Skip logging detailed list of actions in production. Test Plan: Tested manually by eyeballing log output in dev environment. Reviewers: paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D3086
This commit is contained in:
36
app/server/lib/LogMethods.ts
Normal file
36
app/server/lib/LogMethods.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import * as log from 'app/server/lib/log';
|
||||
|
||||
export type ILogMeta = log.ILogMeta;
|
||||
|
||||
/**
|
||||
* Helper for logging with metadata. The created object has methods similar to those of the `log`
|
||||
* module, but with an extra required first argument. The produced messages get metadata produced
|
||||
* by the constructor callback applied to that argument, and the specified prefix.
|
||||
*
|
||||
* Usage:
|
||||
* _log = new LogMethods(prefix, (info) => ({...logMetadata...}))
|
||||
* _log.info(info, "hello %", name);
|
||||
* _log.warn(info, "hello %", name);
|
||||
* etc.
|
||||
*/
|
||||
export class LogMethods<Info> {
|
||||
constructor(
|
||||
private _prefix: string,
|
||||
private _getMeta: (info: Info) => log.ILogMeta,
|
||||
) {}
|
||||
|
||||
public debug(info: Info, msg: string, ...args: any[]) { this.log('debug', info, msg, ...args); }
|
||||
public info(info: Info, msg: string, ...args: any[]) { this.log('info', info, msg, ...args); }
|
||||
public warn(info: Info, msg: string, ...args: any[]) { this.log('warn', info, msg, ...args); }
|
||||
public error(info: Info, msg: string, ...args: any[]) { this.log('error', info, msg, ...args); }
|
||||
|
||||
public log(level: string, info: Info, msg: string, ...args: any[]): void {
|
||||
log.origLog(level, this._prefix + msg, ...args, this._getMeta(info));
|
||||
}
|
||||
|
||||
// Log with the given level, and include the provided log metadata in addition to that produced
|
||||
// by _getMeta(info).
|
||||
public rawLog(level: string, info: Info, msg: string, meta: ILogMeta): void {
|
||||
log.origLog(level, this._prefix + msg, {...this._getMeta(info), ...meta});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user