feat: add option to disable app log output, close #1895

This commit is contained in:
zjdndjf
2026-06-07 03:28:40 +08:00
parent 14a738ed17
commit 32e86b8466
10 changed files with 28 additions and 1 deletions

View File

@@ -4,6 +4,7 @@ import { parse, stringify } from '../utils/yaml'
import { deepMerge } from '../utils/merge'
import { defaultConfig } from '../utils/template'
import { normalizeMaxLogFileSizeMB, setGlobalMaxLogFileSizeMB } from '../utils/logFile'
import { setAppLogDisabled } from '../utils/logger'
let appConfig: IAppConfig // config.yaml
let appConfigWriteQueue: Promise<void> = Promise.resolve()
@@ -23,6 +24,7 @@ export async function getAppConfig(force = false): Promise<IAppConfig> {
await writeFile(appConfigPath(), stringify(mergedConfig))
}
setGlobalMaxLogFileSizeMB(mergedConfig.maxLogFileSize)
setAppLogDisabled(mergedConfig.disableAppLog === true)
appConfig = mergedConfig
})
await appConfigWriteQueue
@@ -40,6 +42,7 @@ export async function patchAppConfig(patch: Partial<IAppConfig>): Promise<void>
}
appConfig.maxLogFileSize = normalizeMaxLogFileSizeMB(appConfig.maxLogFileSize)
setGlobalMaxLogFileSizeMB(appConfig.maxLogFileSize)
setAppLogDisabled(appConfig.disableAppLog === true)
await writeFile(appConfigPath(), stringify(appConfig))
})
await appConfigWriteQueue

View File

@@ -3,6 +3,12 @@ import { appendToFileWithLimit } from './logFile'
export type LogLevel = 'debug' | 'info' | 'warn' | 'error'
let appLogDisabled = false
export function setAppLogDisabled(value: boolean): void {
appLogDisabled = value === true
}
class Logger {
private moduleName: string
@@ -21,6 +27,7 @@ class Logger {
}
private async writeToFile(level: LogLevel, message: string, error?: unknown): Promise<void> {
if (appLogDisabled) return
try {
const appLogPath = logPath()
const logMessage = this.formatLogMessage(level, message, error)

View File

@@ -16,6 +16,7 @@ export const defaultConfig: IAppConfig = {
customTrayIcon: '',
maxLogDays: 7,
maxLogFileSize: 10,
disableAppLog: false,
proxyCols: 'auto',
connectionDirection: 'asc',
connectionOrderBy: 'time',

View File

@@ -76,7 +76,8 @@ const GeneralConfig: React.FC = () => {
appTheme = 'system',
language = 'zh-CN',
triggerMainWindowBehavior = 'show',
hideConnectionCardWave = false
hideConnectionCardWave = false,
disableAppLog = false
} = appConfig || {}
useEffect(() => {
@@ -543,6 +544,15 @@ const GeneralConfig: React.FC = () => {
}}
/>
</SettingItem>
<SettingItem title={t('settings.disableAppLog')} divider>
<Switch
size="sm"
isSelected={disableAppLog}
onValueChange={async (v) => {
await patchAppConfig({ disableAppLog: v })
}}
/>
</SettingItem>
<SettingItem title={t('settings.triggerMainWindowBehavior')} divider>
<Tabs
size="sm"

View File

@@ -235,6 +235,7 @@
"mihomo.disableSystemCA": "Disable System CA",
"mihomo.logRetentionDays": "Log Retention Days",
"mihomo.logFileSizeLimit": "Single Log File Limit (MB)",
"settings.disableAppLog": "Disable App Log",
"mihomo.logLevel": "Log Level",
"mihomo.selectLogLevel": "Select Log Level",
"mihomo.silent": "Silent",

View File

@@ -210,6 +210,7 @@
"mihomo.disableSystemCA": "عدم استفاده از گواهی CA سیستم",
"mihomo.logRetentionDays": "روزهای نگهداری لاگ",
"mihomo.logFileSizeLimit": "حداکثر حجم هر فایل لاگ (MB)",
"settings.disableAppLog": "غیرفعال‌سازی لاگ برنامه",
"mihomo.logLevel": "سطح لاگ",
"mihomo.selectLogLevel": "انتخاب سطح لاگ",
"mihomo.silent": "بی‌صدا",

View File

@@ -214,6 +214,7 @@
"mihomo.disableSystemCA": "Отключить системный CA",
"mihomo.logRetentionDays": "Дни хранения логов",
"mihomo.logFileSizeLimit": "Лимит одного лог-файла (MB)",
"settings.disableAppLog": "Отключить лог приложения",
"mihomo.logLevel": "Уровень логирования",
"mihomo.selectLogLevel": "Выберите уровень логирования",
"mihomo.silent": "Тихий",

View File

@@ -235,6 +235,7 @@
"mihomo.disableSystemCA": "不使用系统 CA 证书",
"mihomo.logRetentionDays": "日志保留天数",
"mihomo.logFileSizeLimit": "日志上限MB",
"settings.disableAppLog": "禁用应用日志",
"mihomo.logLevel": "日志等级",
"mihomo.selectLogLevel": "选择日志等级",
"mihomo.silent": "静默",

View File

@@ -235,6 +235,7 @@
"mihomo.disableSystemCA": "不使用系統 CA 證書",
"mihomo.logRetentionDays": "日誌保留天數",
"mihomo.logFileSizeLimit": "日誌上限MB",
"settings.disableAppLog": "停用應用程式日誌",
"mihomo.logLevel": "日誌等級",
"mihomo.selectLogLevel": "選擇日誌等級",
"mihomo.silent": "靜默",

View File

@@ -320,6 +320,7 @@ interface IAppConfig {
sysProxy: ISysProxyConfig
maxLogDays: number
maxLogFileSize: number
disableAppLog?: boolean
userAgent?: string
delayTestConcurrency?: number
delayTestUrl?: string