Skip to content

Commit d1958ae

Browse files
authored
feat(proxy): add logging (#7)
1 parent a09bf47 commit d1958ae

File tree

4 files changed

+38
-1
lines changed

4 files changed

+38
-1
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"release": "bumpp --commit --tag --push"
3333
},
3434
"dependencies": {
35+
"@crowlog/logger": "^2.2.1",
3536
"@owlrelay/webhook": "^0.0.2",
3637
"postal-mime": "^2.4.1"
3738
},

pnpm-lock.yaml

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { Address, Email } from 'postal-mime';
22
import type { Env } from './types';
3+
import { createLogger } from '@crowlog/logger';
34
import { triggerWebhook } from '@owlrelay/webhook';
45
import PostalMime from 'postal-mime';
56

@@ -51,15 +52,33 @@ function parseConfig({ env }: { env: Env }) {
5152
};
5253
}
5354

55+
const logger = createLogger({ namespace: 'email-proxy' });
56+
const createRequestId = ({ now = new Date() }: { now?: Date } = {}) => `req_${now.getTime()}${Math.random().toString(36).substring(2, 15)}`;
57+
5458
export default {
5559
async email(message: ForwardableEmailMessage, env: Env): Promise<void> {
60+
const requestId = createRequestId();
5661
const { webhookUrl, webhookSecret } = parseConfig({ env });
5762
const { email } = await parseEmail({
5863
rawMessage: message.raw,
5964
realTo: message.to,
6065
realFrom: message.from,
6166
});
6267

63-
await triggerWebhook({ email, webhookUrl, webhookSecret });
68+
logger.info({
69+
from: email.from,
70+
originalFrom: email.originalFrom,
71+
to: email.to,
72+
originalTo: email.originalTo,
73+
requestId,
74+
}, 'Received email');
75+
76+
try {
77+
await triggerWebhook({ email, webhookUrl, webhookSecret });
78+
logger.info({ requestId }, 'Webhook triggered successfully');
79+
} catch (error) {
80+
logger.error({ error, requestId }, 'Failed to trigger webhook');
81+
throw error;
82+
}
6483
},
6584
};

wrangler.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
name = "papra-email-proxy"
22
main = "src/index.ts"
33
compatibility_date = "2025-01-22"
4+
5+
[observability]
6+
7+
[observability.logs]
8+
enabled = true
9+
head_sampling_rate = 1
10+
invocation_logs = true
11+
persist = true

0 commit comments

Comments
 (0)