mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/mihomo-party-org/clash-party.git
synced 2026-09-20 08:03:39 +08:00
feat: add option to disable app log output, close #1895
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -16,6 +16,7 @@ export const defaultConfig: IAppConfig = {
|
||||
customTrayIcon: '',
|
||||
maxLogDays: 7,
|
||||
maxLogFileSize: 10,
|
||||
disableAppLog: false,
|
||||
proxyCols: 'auto',
|
||||
connectionDirection: 'asc',
|
||||
connectionOrderBy: 'time',
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -210,6 +210,7 @@
|
||||
"mihomo.disableSystemCA": "عدم استفاده از گواهی CA سیستم",
|
||||
"mihomo.logRetentionDays": "روزهای نگهداری لاگ",
|
||||
"mihomo.logFileSizeLimit": "حداکثر حجم هر فایل لاگ (MB)",
|
||||
"settings.disableAppLog": "غیرفعالسازی لاگ برنامه",
|
||||
"mihomo.logLevel": "سطح لاگ",
|
||||
"mihomo.selectLogLevel": "انتخاب سطح لاگ",
|
||||
"mihomo.silent": "بیصدا",
|
||||
|
||||
@@ -214,6 +214,7 @@
|
||||
"mihomo.disableSystemCA": "Отключить системный CA",
|
||||
"mihomo.logRetentionDays": "Дни хранения логов",
|
||||
"mihomo.logFileSizeLimit": "Лимит одного лог-файла (MB)",
|
||||
"settings.disableAppLog": "Отключить лог приложения",
|
||||
"mihomo.logLevel": "Уровень логирования",
|
||||
"mihomo.selectLogLevel": "Выберите уровень логирования",
|
||||
"mihomo.silent": "Тихий",
|
||||
|
||||
@@ -235,6 +235,7 @@
|
||||
"mihomo.disableSystemCA": "不使用系统 CA 证书",
|
||||
"mihomo.logRetentionDays": "日志保留天数",
|
||||
"mihomo.logFileSizeLimit": "日志上限(MB)",
|
||||
"settings.disableAppLog": "禁用应用日志",
|
||||
"mihomo.logLevel": "日志等级",
|
||||
"mihomo.selectLogLevel": "选择日志等级",
|
||||
"mihomo.silent": "静默",
|
||||
|
||||
@@ -235,6 +235,7 @@
|
||||
"mihomo.disableSystemCA": "不使用系統 CA 證書",
|
||||
"mihomo.logRetentionDays": "日誌保留天數",
|
||||
"mihomo.logFileSizeLimit": "日誌上限(MB)",
|
||||
"settings.disableAppLog": "停用應用程式日誌",
|
||||
"mihomo.logLevel": "日誌等級",
|
||||
"mihomo.selectLogLevel": "選擇日誌等級",
|
||||
"mihomo.silent": "靜默",
|
||||
|
||||
1
src/shared/types.d.ts
vendored
1
src/shared/types.d.ts
vendored
@@ -320,6 +320,7 @@ interface IAppConfig {
|
||||
sysProxy: ISysProxyConfig
|
||||
maxLogDays: number
|
||||
maxLogFileSize: number
|
||||
disableAppLog?: boolean
|
||||
userAgent?: string
|
||||
delayTestConcurrency?: number
|
||||
delayTestUrl?: string
|
||||
|
||||
Reference in New Issue
Block a user