Skip to content

Commit d9bc2ef

Browse files
kwonojrhysd
authored andcommitted
feat(attach): allow custom logger for attach neovim proc (#138)
* feat(attach): allow custom logger for attach neovim proc * refactor(base): use typed logger interface
1 parent 57ba042 commit d9bc2ef

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

Diff for: packages/neovim/src/api/Base.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { EventEmitter } from 'events';
22

33
import { Transport } from '../utils/transport';
4-
import { logger as loggerModule } from '../utils/logger';
4+
import { Logger } from '../utils/logger';
55
import { VimValue } from '../types/VimValue';
66

77
export interface BaseConstructorOptions {
88
transport?: Transport;
9-
logger?: typeof loggerModule;
9+
logger?: Logger;
1010
data?: Buffer;
1111
metadata?: any;
1212
client?: any;
@@ -31,7 +31,7 @@ export class BaseApi extends EventEmitter {
3131

3232
protected prefix: string;
3333

34-
public logger: typeof loggerModule;
34+
public logger: Logger;
3535

3636
public data: Buffer | number;
3737

@@ -49,7 +49,8 @@ export class BaseApi extends EventEmitter {
4949

5050
this.setTransport(transport);
5151
this.data = data;
52-
this.logger = logger || loggerModule;
52+
// eslint-disable-next-line global-require
53+
this.logger = logger || require('../utils/logger').logger;
5354
this.client = client;
5455

5556
if (metadata) {

Diff for: packages/neovim/src/attach/attach.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,24 @@ import { createConnection } from 'net';
22
import * as child from 'child_process';
33

44
import { NeovimClient } from '../api/client';
5-
import { logger } from '../utils/logger';
5+
import { Logger } from '../utils/logger';
66

77
export interface Attach {
88
reader?: NodeJS.ReadableStream;
99
writer?: NodeJS.WritableStream;
1010
proc?: NodeJS.Process | child.ChildProcess;
1111
socket?: string;
12+
options?: {
13+
logger?: Logger;
14+
};
1215
}
1316

1417
export function attach({
1518
reader: _reader,
1619
writer: _writer,
1720
proc,
1821
socket,
22+
options = {},
1923
}: Attach) {
2024
let writer;
2125
let reader;
@@ -33,7 +37,9 @@ export function attach({
3337
}
3438

3539
if (writer && reader) {
36-
const neovim = new NeovimClient({ logger });
40+
// eslint-disable-next-line global-require
41+
const loggerInstance = options.logger || require('../utils/logger').logger; // lazy load to winston only if needed
42+
const neovim = new NeovimClient({ logger: loggerInstance });
3743
neovim.attach({
3844
writer,
3945
reader,

Diff for: packages/neovim/src/utils/logger.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import * as winston from 'winston';
22

33
const level = process.env.NVIM_NODE_LOG_LEVEL || 'debug';
44

5-
const logger = winston.createLogger({
5+
const winstonLogger = winston.createLogger({
66
level,
77
});
88

99
if (process.env.NVIM_NODE_LOG_FILE) {
10-
logger.add(
10+
winstonLogger.add(
1111
new winston.transports.File({
1212
filename: process.env.NVIM_NODE_LOG_FILE,
1313
level,
@@ -16,11 +16,12 @@ if (process.env.NVIM_NODE_LOG_FILE) {
1616
}
1717

1818
if (process.env.ALLOW_CONSOLE) {
19-
logger.add(
19+
winstonLogger.add(
2020
new winston.transports.Console({
2121
format: winston.format.simple(),
2222
})
2323
);
2424
}
2525

26-
export { logger };
26+
export type Logger = Pick<winston.Logger, 'info' | 'warn' | 'error' | 'debug'>;
27+
export const logger: Logger = winstonLogger;

0 commit comments

Comments
 (0)