fix(logs): gate repository list debug logs behind REPO_LIST_DEBUG_LOGS env flag

- Add REPO_LIST_DEBUG_LOGS environment variable to control debug output

- Gate debug logs in admin controller and gitea service

- Keep error/warn logs always enabled for production visibility

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
This commit is contained in:
jeffusion
2026-03-26 22:05:13 +08:00
committed by 路遥知码力
parent b6e6ee0927
commit 3a97d673f6
2 changed files with 36 additions and 22 deletions

View File

@@ -9,6 +9,7 @@ import { logger } from '../utils/logger';
const publicRoutes = new Hono(); const publicRoutes = new Hono();
const protectedRoutes = new Hono(); const protectedRoutes = new Hono();
const isRepoListDebugEnabled = process.env.REPO_LIST_DEBUG_LOGS === 'true';
// --- Public Routes --- // --- Public Routes ---
@@ -47,27 +48,33 @@ protectedRoutes.get('/repositories', async (c) => {
}; };
try { try {
logger.debug('开始获取仓库列表', requestContext); if (isRepoListDebugEnabled) {
logger.debug('开始获取仓库列表', requestContext);
}
const { repos, totalCount } = await giteaService.listAllRepositories(page, limit, query); const { repos, totalCount } = await giteaService.listAllRepositories(page, limit, query);
logger.debug('仓库搜索接口返回成功', { if (isRepoListDebugEnabled) {
...requestContext, logger.debug('仓库搜索接口返回成功', {
reposCount: repos.length, ...requestContext,
totalCount, reposCount: repos.length,
sampleRepos: repos totalCount,
.slice(0, 3) sampleRepos: repos
.map((repo) => (typeof repo.full_name === 'string' ? repo.full_name : null)), .slice(0, 3)
}); .map((repo) => (typeof repo.full_name === 'string' ? repo.full_name : null)),
});
}
const webhookUrl = c.req.url.replace(/\/admin\/api\/repositories.*$/, '/webhook/gitea'); const webhookUrl = c.req.url.replace(/\/admin\/api\/repositories.*$/, '/webhook/gitea');
const fullNames = repos const fullNames = repos
.map((repo) => (typeof repo.full_name === 'string' ? repo.full_name : null)) .map((repo) => (typeof repo.full_name === 'string' ? repo.full_name : null))
.filter((name): name is string => name !== null); .filter((name): name is string => name !== null);
logger.debug('准备批量读取项目级提示词', { if (isRepoListDebugEnabled) {
...requestContext, logger.debug('准备批量读取项目级提示词', {
fullNamesCount: fullNames.length, ...requestContext,
fullNamesSample: fullNames.slice(0, 5), fullNamesCount: fullNames.length,
}); fullNamesSample: fullNames.slice(0, 5),
});
}
let promptMap: Record<string, string>; let promptMap: Record<string, string>;
try { try {

View File

@@ -3,6 +3,8 @@ import config from '../config';
import { toErrorLogMeta } from '../utils/error-log'; import { toErrorLogMeta } from '../utils/error-log';
import { logger } from '../utils/logger'; import { logger } from '../utils/logger';
const isRepoListDebugEnabled = process.env.REPO_LIST_DEBUG_LOGS === 'true';
export interface LineComment { export interface LineComment {
path: string; path: string;
line: number; line: number;
@@ -424,7 +426,10 @@ export const giteaService: GiteaService = {
}; };
try { try {
logger.debug('开始请求 Gitea 仓库搜索接口', requestContext); if (isRepoListDebugEnabled) {
logger.debug('开始请求 Gitea 仓库搜索接口', requestContext);
}
const response = await giteaAdminClient.get('/repos/search', { const response = await giteaAdminClient.get('/repos/search', {
params: { params: {
page, page,
@@ -433,13 +438,15 @@ export const giteaService: GiteaService = {
}, },
}); });
logger.debug('Gitea 仓库搜索接口返回成功', { if (isRepoListDebugEnabled) {
...requestContext, logger.debug('Gitea 仓库搜索接口返回成功', {
status: response.status, ...requestContext,
contentType: response.headers['content-type'] ?? null, status: response.status,
dataCount: Array.isArray(response.data?.data) ? response.data.data.length : null, contentType: response.headers['content-type'] ?? null,
headerTotalCount: response.headers['x-total-count'] ?? null, dataCount: Array.isArray(response.data?.data) ? response.data.data.length : null,
}); headerTotalCount: response.headers['x-total-count'] ?? null,
});
}
const totalCount = Number.parseInt(response.headers['x-total-count'] || '0', 10); const totalCount = Number.parseInt(response.headers['x-total-count'] || '0', 10);
return { repos: response.data.data, totalCount }; return { repos: response.data.data, totalCount };