|
1 | 1 | import { appendFileSync, existsSync, mkdirSync, unlinkSync } from 'fs' |
2 | 2 | import path, { dirname } from 'path' |
3 | 3 | import { format as stringFormat } from 'util' |
| 4 | +import { pino } from 'pino' |
4 | 5 |
|
5 | 6 | import { env, IS_DEV, IS_TEST, IS_CI } from '@codebuff/common/env' |
6 | 7 | import { createAnalyticsDispatcher } from '@codebuff/common/util/analytics-dispatcher' |
7 | | -import { pino } from 'pino' |
| 8 | +import { AnalyticsEvent } from '@codebuff/common/constants/analytics-events' |
| 9 | +import { getAnalyticsEventId } from '@codebuff/common/util/analytics-log' |
8 | 10 |
|
9 | 11 | import { |
10 | 12 | flushAnalytics, |
@@ -145,6 +147,18 @@ function sendAnalyticsAndLog( |
145 | 147 | }) |
146 | 148 | } |
147 | 149 |
|
| 150 | + // Send all log events to PostHog in production for better observability |
| 151 | + // Skip if the log already has an eventId (to avoid duplicate tracking) |
| 152 | + const hasEventId = includeData && getAnalyticsEventId(normalizedData) !== null |
| 153 | + if (!IS_DEV && !IS_TEST && !IS_CI && !hasEventId) { |
| 154 | + trackEvent(AnalyticsEvent.CLI_LOG, { |
| 155 | + level, |
| 156 | + msg: stringFormat(normalizedMsg ?? '', ...args), |
| 157 | + ...(includeData ? { data: normalizedData } : {}), |
| 158 | + ...loggerContext, |
| 159 | + }) |
| 160 | + } |
| 161 | + |
148 | 162 | // In dev mode, use appendFileSync for real-time logging (Bun has issues with pino sync) |
149 | 163 | // In prod mode, use pino for better performance |
150 | 164 | if (IS_DEV && logPath) { |
|
0 commit comments