Skip to content

Commit

Permalink
fix(logger): replace winston with bunyan
Browse files Browse the repository at this point in the history
Winston does not play nice in web, and requires additional polyfills. bunyan is feature-par and is more suited for web environments
  • Loading branch information
dtfiedler committed May 1, 2024
1 parent 590ac76 commit 0488f75
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 39 deletions.
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,9 @@
"arbundles": "0.11.0",
"arweave": "1.14.4",
"axios": "1.4.0",
"setimmediate": "^1.0.5",
"bunyan": "^1.8.15",
"warp-arbundles": "^1.0.4",
"warp-contracts": "1.4.39",
"winston": "^3.11.0"
"warp-contracts": "1.4.39"
},
"lint-staged": {
"**/*.{ts,js,mjs,cjs,md,json}": [
Expand Down
2 changes: 1 addition & 1 deletion src/common/arweave.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import Arweave from 'arweave';
import Arweave from 'arweave/node/index.js';

export const defaultArweave = Arweave.init({
host: 'ar-io.dev',
Expand Down
45 changes: 12 additions & 33 deletions src/common/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,68 +14,47 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// small polyfill for winston
import 'setimmediate';
import winston, { createLogger, format, transports } from 'winston';
import bunyan from 'bunyan';

import { Logger } from '../types.js';
import { version } from '../version.js';

export class DefaultLogger implements Logger {
private logger: winston.Logger;
private logger: bunyan.Logger;
constructor({
level = 'info',
logFormat = 'simple',
// logFormat = 'simple',
}: {
level?: 'info' | 'debug' | 'error' | 'none' | undefined;
logFormat?: 'simple' | 'json' | undefined;
// logFormat?: 'simple' | 'json' | undefined;
} = {}) {
this.logger = createLogger({
this.logger = bunyan.createLogger({
level,
defaultMeta: { client: 'ar-io-sdk', version },
silent: level === 'none',
format: getLogFormat(logFormat),
transports: [new transports.Console()],
name: 'ar-io-sdk',
version,
serializers: bunyan.stdSerializers,
});
}

/* eslint-disable @typescript-eslint/no-explicit-any */
info(message: string, ...args: any[]) {
this.logger.info(message, ...args);
this.logger.info(...args, message);
}

warn(message: string, ...args: any[]) {
this.logger.warn(message, ...args);
this.logger.warn(...args, message);
}

error(message: string, ...args: any[]) {
this.logger.error(message, ...args);
this.logger.error(...args, message);
}

debug(message: string, ...args: any[]) {
this.logger.debug(message, ...args);
this.logger.debug(...args, message);
}

setLogLevel(level: string) {
this.logger.level = level;
}

setLogFormat(logFormat: string) {
this.logger.format = getLogFormat(logFormat);
}
/* eslint-enable @typescript-eslint/no-explicit-any */
}

function getLogFormat(logFormat: string) {
return format.combine(
format((info) => {
if (info.stack && info.level !== 'error') {
delete info.stack;
}
return info;
})(),
format.errors({ stack: true }), // Ensure errors show a stack trace
format.timestamp(),
logFormat === 'json' ? format.json() : format.simple(),
);
}
1 change: 0 additions & 1 deletion src/node/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,3 @@ export { ArweaveSigner, ArconnectSigner } from 'arbundles';
export * from '../types.js';
export * from '../common/index.js';
export * from '../constants.js';
export * from '../utils/index.js';
1 change: 0 additions & 1 deletion src/web/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,3 @@ export { ArweaveSigner, ArconnectSigner } from 'arbundles';
export * from '../types.js';
export * from '../common/index.js';
export * from '../constants.js';
export * from '../utils/index.js';

0 comments on commit 0488f75

Please sign in to comment.