Skip to content

Commit 77a7ed8

Browse files
committed
create logger package
1 parent fe34787 commit 77a7ed8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+332
-156
lines changed

packages/backend/package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,14 @@
2323
},
2424
"dependencies": {
2525
"@gitbeaker/rest": "^40.5.1",
26-
"@logtail/node": "^0.5.2",
27-
"@logtail/winston": "^0.5.2",
2826
"@octokit/rest": "^21.0.2",
2927
"@sentry/cli": "^2.42.2",
3028
"@sentry/node": "^9.3.0",
3129
"@sentry/profiling-node": "^9.3.0",
3230
"@sourcebot/crypto": "workspace:*",
3331
"@sourcebot/db": "workspace:*",
3432
"@sourcebot/error": "workspace:*",
33+
"@sourcebot/logger": "workspace:*",
3534
"@sourcebot/schemas": "workspace:*",
3635
"@t3-oss/env-core": "^0.12.0",
3736
"@types/express": "^5.0.0",
@@ -51,7 +50,6 @@
5150
"prom-client": "^15.1.3",
5251
"simple-git": "^3.27.0",
5352
"strip-json-comments": "^5.0.1",
54-
"winston": "^3.15.0",
5553
"zod": "^3.24.3"
5654
}
5755
}

packages/backend/src/bitbucket.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { createBitbucketCloudClient } from "@coderabbitai/bitbucket/cloud";
22
import { createBitbucketServerClient } from "@coderabbitai/bitbucket/server";
33
import { BitbucketConnectionConfig } from "@sourcebot/schemas/v3/bitbucket.type";
44
import type { ClientOptions, ClientPathsWithMethod } from "openapi-fetch";
5-
import { createLogger } from "./logger.js";
5+
import { createLogger } from "@sourcebot/logger";
66
import { PrismaClient } from "@sourcebot/db";
77
import { getTokenFromConfig, measure, fetchWithRetry } from "./utils.js";
88
import * as Sentry from "@sentry/node";
@@ -13,7 +13,7 @@ import { SchemaRestRepository as ServerRepository } from "@coderabbitai/bitbucke
1313
import { processPromiseResults } from "./connectionUtils.js";
1414
import { throwIfAnyFailed } from "./connectionUtils.js";
1515

16-
const logger = createLogger("Bitbucket");
16+
const logger = createLogger('bitbucket');
1717
const BITBUCKET_CLOUD_GIT = 'https://bitbucket.org';
1818
const BITBUCKET_CLOUD_API = 'https://api.bitbucket.org/2.0';
1919
const BITBUCKET_CLOUD = "cloud";

packages/backend/src/connectionManager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Connection, ConnectionSyncStatus, PrismaClient, Prisma } from "@sourceb
22
import { Job, Queue, Worker } from 'bullmq';
33
import { Settings } from "./types.js";
44
import { ConnectionConfig } from "@sourcebot/schemas/v3/connection.type";
5-
import { createLogger } from "./logger.js";
5+
import { createLogger } from "@sourcebot/logger";
66
import { Redis } from 'ioredis';
77
import { RepoData, compileGithubConfig, compileGitlabConfig, compileGiteaConfig, compileGerritConfig, compileBitbucketConfig, compileGenericGitHostConfig } from "./repoCompileUtils.js";
88
import { BackendError, BackendException } from "@sourcebot/error";
@@ -32,7 +32,7 @@ type JobResult = {
3232
export class ConnectionManager implements IConnectionManager {
3333
private worker: Worker;
3434
private queue: Queue<JobPayload>;
35-
private logger = createLogger('ConnectionManager');
35+
private logger = createLogger('connection-manager');
3636

3737
constructor(
3838
private db: PrismaClient,

packages/backend/src/gerrit.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import fetch from 'cross-fetch';
22
import { GerritConnectionConfig } from "@sourcebot/schemas/v3/index.type"
3-
import { createLogger } from './logger.js';
3+
import { createLogger } from '@sourcebot/logger';
44
import micromatch from "micromatch";
55
import { measure, fetchWithRetry } from './utils.js';
66
import { BackendError } from '@sourcebot/error';
@@ -33,7 +33,7 @@ interface GerritWebLink {
3333
url: string;
3434
}
3535

36-
const logger = createLogger('Gerrit');
36+
const logger = createLogger('gerrit');
3737

3838
export const getGerritReposFromConfig = async (config: GerritConnectionConfig): Promise<GerritProject[]> => {
3939
const url = config.url.endsWith('/') ? config.url : `${config.url}/`;
@@ -95,7 +95,7 @@ const fetchAllProjects = async (url: string): Promise<GerritProject[]> => {
9595
try {
9696
response = await fetch(endpointWithParams);
9797
if (!response.ok) {
98-
console.log(`Failed to fetch projects from Gerrit at ${endpointWithParams} with status ${response.status}`);
98+
logger.error(`Failed to fetch projects from Gerrit at ${endpointWithParams} with status ${response.status}`);
9999
const e = new BackendException(BackendError.CONNECTION_SYNC_FAILED_TO_FETCH_GERRIT_PROJECTS, {
100100
status: response.status,
101101
});
@@ -109,7 +109,7 @@ const fetchAllProjects = async (url: string): Promise<GerritProject[]> => {
109109
}
110110

111111
const status = (err as any).code;
112-
console.log(`Failed to fetch projects from Gerrit at ${endpointWithParams} with status ${status}`);
112+
logger.error(`Failed to fetch projects from Gerrit at ${endpointWithParams} with status ${status}`);
113113
throw new BackendException(BackendError.CONNECTION_SYNC_FAILED_TO_FETCH_GERRIT_PROJECTS, {
114114
status: status,
115115
});

packages/backend/src/gitea.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import { Api, giteaApi, HttpResponse, Repository as GiteaRepository } from 'gite
22
import { GiteaConnectionConfig } from '@sourcebot/schemas/v3/gitea.type';
33
import { getTokenFromConfig, measure } from './utils.js';
44
import fetch from 'cross-fetch';
5-
import { createLogger } from './logger.js';
5+
import { createLogger } from '@sourcebot/logger';
66
import micromatch from 'micromatch';
77
import { PrismaClient } from '@sourcebot/db';
88
import { processPromiseResults, throwIfAnyFailed } from './connectionUtils.js';
99
import * as Sentry from "@sentry/node";
1010
import { env } from './env.js';
1111

12-
const logger = createLogger('Gitea');
12+
const logger = createLogger('gitea');
1313
const GITEA_CLOUD_HOSTNAME = "gitea.com";
1414

1515
export const getGiteaReposFromConfig = async (config: GiteaConnectionConfig, orgId: number, db: PrismaClient) => {

packages/backend/src/github.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Octokit } from "@octokit/rest";
22
import { GithubConnectionConfig } from "@sourcebot/schemas/v3/github.type";
3-
import { createLogger } from "./logger.js";
3+
import { createLogger } from "@sourcebot/logger";
44
import { getTokenFromConfig, measure, fetchWithRetry } from "./utils.js";
55
import micromatch from "micromatch";
66
import { PrismaClient } from "@sourcebot/db";
@@ -9,7 +9,7 @@ import { processPromiseResults, throwIfAnyFailed } from "./connectionUtils.js";
99
import * as Sentry from "@sentry/node";
1010
import { env } from "./env.js";
1111

12-
const logger = createLogger("GitHub");
12+
const logger = createLogger('github');
1313
const GITHUB_CLOUD_HOSTNAME = "github.com";
1414

1515
export type OctokitRepository = {

packages/backend/src/gitlab.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { Gitlab, ProjectSchema } from "@gitbeaker/rest";
22
import micromatch from "micromatch";
3-
import { createLogger } from "./logger.js";
3+
import { createLogger } from "@sourcebot/logger";
44
import { GitlabConnectionConfig } from "@sourcebot/schemas/v3/gitlab.type"
55
import { getTokenFromConfig, measure, fetchWithRetry } from "./utils.js";
66
import { PrismaClient } from "@sourcebot/db";
77
import { processPromiseResults, throwIfAnyFailed } from "./connectionUtils.js";
88
import * as Sentry from "@sentry/node";
99
import { env } from "./env.js";
1010

11-
const logger = createLogger("GitLab");
11+
const logger = createLogger('gitlab');
1212
export const GITLAB_CLOUD_HOSTNAME = "gitlab.com";
1313

1414
export const getGitLabReposFromConfig = async (config: GitlabConnectionConfig, orgId: number, db: PrismaClient) => {

packages/backend/src/index.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,34 @@ import { AppContext } from "./types.js";
88
import { main } from "./main.js"
99
import { PrismaClient } from "@sourcebot/db";
1010
import { env } from "./env.js";
11+
import { createLogger } from "@sourcebot/logger";
12+
13+
const logger = createLogger('index');
1114

1215
// Register handler for normal exit
1316
process.on('exit', (code) => {
14-
console.log(`Process is exiting with code: ${code}`);
17+
logger.info(`Process is exiting with code: ${code}`);
1518
});
1619

1720
// Register handlers for abnormal terminations
1821
process.on('SIGINT', () => {
19-
console.log('Process interrupted (SIGINT)');
20-
process.exit(130);
22+
logger.info('Process interrupted (SIGINT)');
23+
process.exit(0);
2124
});
2225

2326
process.on('SIGTERM', () => {
24-
console.log('Process terminated (SIGTERM)');
25-
process.exit(143);
27+
logger.info('Process terminated (SIGTERM)');
28+
process.exit(0);
2629
});
2730

2831
// Register handlers for uncaught exceptions and unhandled rejections
2932
process.on('uncaughtException', (err) => {
30-
console.log(`Uncaught exception: ${err.message}`);
33+
logger.error(`Uncaught exception: ${err.message}`);
3134
process.exit(1);
3235
});
3336

3437
process.on('unhandledRejection', (reason, promise) => {
35-
console.log(`Unhandled rejection at: ${promise}, reason: ${reason}`);
38+
logger.error(`Unhandled rejection at: ${promise}, reason: ${reason}`);
3639
process.exit(1);
3740
});
3841

@@ -60,12 +63,12 @@ main(prisma, context)
6063
await prisma.$disconnect();
6164
})
6265
.catch(async (e) => {
63-
console.error(e);
66+
logger.error(e);
6467
Sentry.captureException(e);
6568

6669
await prisma.$disconnect();
6770
process.exit(1);
6871
})
6972
.finally(() => {
70-
console.log("Shutting down...");
73+
logger.info("Shutting down...");
7174
});

packages/backend/src/instrument.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import * as Sentry from "@sentry/node";
22
import { env } from "./env.js";
3+
import { createLogger } from "@sourcebot/logger";
4+
5+
const logger = createLogger('instrument');
36

47
if (!!env.NEXT_PUBLIC_SENTRY_BACKEND_DSN && !!env.NEXT_PUBLIC_SENTRY_ENVIRONMENT) {
58
Sentry.init({
@@ -8,5 +11,5 @@ if (!!env.NEXT_PUBLIC_SENTRY_BACKEND_DSN && !!env.NEXT_PUBLIC_SENTRY_ENVIRONMENT
811
environment: env.NEXT_PUBLIC_SENTRY_ENVIRONMENT,
912
});
1013
} else {
11-
console.debug("Sentry was not initialized");
14+
logger.debug("Sentry was not initialized");
1215
}

packages/backend/src/main.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { PrismaClient } from '@sourcebot/db';
2-
import { createLogger } from "./logger.js";
2+
import { createLogger } from "@sourcebot/logger";
33
import { AppContext } from "./types.js";
44
import { DEFAULT_SETTINGS } from './constants.js';
55
import { Redis } from 'ioredis';
@@ -14,7 +14,7 @@ import { SourcebotConfig } from '@sourcebot/schemas/v3/index.type';
1414
import { indexSchema } from '@sourcebot/schemas/v3/index.schema';
1515
import { Ajv } from "ajv";
1616

17-
const logger = createLogger('main');
17+
const logger = createLogger('backend-main');
1818
const ajv = new Ajv({
1919
validateFormats: false,
2020
});
@@ -56,7 +56,7 @@ export const main = async (db: PrismaClient, context: AppContext) => {
5656
logger.info('Connected to redis');
5757
}).catch((err: unknown) => {
5858
logger.error('Failed to connect to redis');
59-
console.error(err);
59+
logger.error(err);
6060
process.exit(1);
6161
});
6262

0 commit comments

Comments
 (0)