diff --git a/agent/app/service/device_clean.go b/agent/app/service/device_clean.go index 512294e6d..87b455194 100644 --- a/agent/app/service/device_clean.go +++ b/agent/app/service/device_clean.go @@ -182,6 +182,8 @@ func (u *DeviceService) Clean(req []dto.Clean) { } else { dropTaskLog(path.Join(global.Dir.TaskDir, item.Name)) } + case "website_log": + dropWebsiteLog(item.Name) case "script": dropFileOrDir(path.Join(global.Dir.TmpDir, "script", item.Name)) case "images": @@ -621,7 +623,7 @@ func loadLogTree(fileOp fileUtils.FileOp) []dto.CleanTree { for _, file := range list1 { size += file.Size } - treeData = append(treeData, dto.CleanTree{ID: uuid.NewString(), Label: "system_log", Size: uint64(size), Children: list1, Type: "system_log", IsRecommend: true}) + treeData = append(treeData, dto.CleanTree{ID: uuid.NewString(), Label: "system_log", Size: size, Children: list1, Type: "system_log", IsRecommend: true}) path2 := path.Join(global.Dir.TaskDir) list2 := loadTreeWithDir(false, "task_log", path2, fileOp) @@ -632,9 +634,37 @@ func loadLogTree(fileOp fileUtils.FileOp) []dto.CleanTree { list3 := loadTreeWithAllFile(true, path3, "script", path3, fileOp) size3, _ := fileOp.GetDirSize(path3) treeData = append(treeData, dto.CleanTree{ID: uuid.NewString(), Label: "script", Size: uint64(size3), Children: list3, Type: "script", IsRecommend: true}) + + websiteLogList := loadWebsiteLogTree(fileOp) + logTotalSize := uint64(0) + for _, websiteLog := range websiteLogList { + logTotalSize += websiteLog.Size + } + treeData = append(treeData, dto.CleanTree{ID: uuid.NewString(), Label: "website_log", Size: logTotalSize, Children: websiteLogList, Type: "website_log", IsRecommend: false}) + return treeData } +func loadWebsiteLogTree(fileOp fileUtils.FileOp) []dto.CleanTree { + websites, _ := websiteRepo.List() + if len(websites) == 0 { + return nil + } + var res []dto.CleanTree + for _, website := range websites { + size3, _ := fileOp.GetDirSize(path.Join(GetSiteDir(website.Alias), "log")) + res = append(res, dto.CleanTree{ + ID: uuid.NewString(), + Label: website.PrimaryDomain, + Size: uint64(size3), + IsCheck: size3 > 5*1024, + Type: "website_log", + Name: website.Alias, + }) + } + return res +} + func loadContainerTree() []dto.CleanTree { var treeData []dto.CleanTree client, err := docker.NewDockerClient() @@ -849,6 +879,18 @@ func dropVolumes() (int, int) { return len(res.VolumesDeleted), int(res.SpaceReclaimed) } +func dropWebsiteLog(alias string) { + accessLogPath := path.Join(GetSiteDir(alias), "log", "access.log") + errorLogPath := path.Join(GetSiteDir(alias), "log", "error.log") + if err := os.Truncate(accessLogPath, 0); err != nil { + global.LOG.Errorf("truncate access log %s failed, err %v", accessLogPath, err) + } + + if err := os.Truncate(errorLogPath, 0); err != nil { + global.LOG.Errorf("truncate error log %s failed, err %v", errorLogPath, err) + } +} + func dropTaskLog(logDir string) { files, err := os.ReadDir(logDir) if err != nil { diff --git a/agent/app/service/website_utils.go b/agent/app/service/website_utils.go index 305f0f2d1..5dd2675df 100644 --- a/agent/app/service/website_utils.go +++ b/agent/app/service/website_utils.go @@ -131,7 +131,7 @@ func createProxyFile(website *model.Website) error { } func createWebsiteFolder(website *model.Website, runtime *model.Runtime) error { - siteFolder := GteSiteDir(website.Alias) + siteFolder := GetSiteDir(website.Alias) fileOp := files.NewFileOp() if !fileOp.Stat(siteFolder) { if err := fileOp.CreateDir(siteFolder, constant.DirPerm); err != nil { @@ -491,7 +491,7 @@ func delNginxConfig(website model.Website, force bool) error { return err } } - sitePath := GteSiteDir(website.Alias) + sitePath := GetSiteDir(website.Alias) if fileOp.Stat(sitePath) { xpack.RemoveTamper(website.Alias) _ = fileOp.DeleteDir(sitePath) @@ -1357,7 +1357,7 @@ func GetWebSiteRootDir() string { return dir } -func GteSiteDir(alias string) string { +func GetSiteDir(alias string) string { return path.Join(GetWebSiteRootDir(), "sites", alias) } @@ -1399,31 +1399,31 @@ func GetSitePath(website model.Website, confType string) string { case StreamConf: return path.Join(GetWebSiteRootDir(), "stream.d", website.Alias+".conf") case SiteAccessLog: - return path.Join(GteSiteDir(website.Alias), "log", "access.log") + return path.Join(GetSiteDir(website.Alias), "log", "access.log") case SiteErrorLog: - return path.Join(GteSiteDir(website.Alias), "log", "error.log") + return path.Join(GetSiteDir(website.Alias), "log", "error.log") case SiteDir: - return GteSiteDir(website.Alias) + return GetSiteDir(website.Alias) case SiteIndexDir: - return path.Join(GteSiteDir(website.Alias), "index") + return path.Join(GetSiteDir(website.Alias), "index") case SiteCacheDir: - return path.Join(GteSiteDir(website.Alias), "cache") + return path.Join(GetSiteDir(website.Alias), "cache") case SiteProxyDir: - return path.Join(GteSiteDir(website.Alias), "proxy") + return path.Join(GetSiteDir(website.Alias), "proxy") case SiteSSLDir: - return path.Join(GteSiteDir(website.Alias), "ssl") + return path.Join(GetSiteDir(website.Alias), "ssl") case SiteReWritePath: - return path.Join(GteSiteDir(website.Alias), "rewrite", website.Alias+".conf") + return path.Join(GetSiteDir(website.Alias), "rewrite", website.Alias+".conf") case SiteRedirectDir: - return path.Join(GteSiteDir(website.Alias), "redirect") + return path.Join(GetSiteDir(website.Alias), "redirect") case SiteRootAuthBasicPath: - return path.Join(GteSiteDir(website.Alias), "auth_basic", "auth.pass") + return path.Join(GetSiteDir(website.Alias), "auth_basic", "auth.pass") case SitePathAuthBasicDir: - return path.Join(GteSiteDir(website.Alias), "path_auth") + return path.Join(GetSiteDir(website.Alias), "path_auth") case SiteUpstreamDir: - return path.Join(GteSiteDir(website.Alias), "upstream") + return path.Join(GetSiteDir(website.Alias), "upstream") case SiteCorsPath: - return path.Join(GteSiteDir(website.Alias), "cors", "cors.conf") + return path.Join(GetSiteDir(website.Alias), "cors", "cors.conf") } return "" } diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index f542cf2a9..a98359a93 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -2221,8 +2221,8 @@ const message = { downloadHelper: 'Temporary files downloaded from third-party backup accounts by the system', directory: 'Directory', - systemLog: 'System Log Files', - systemLogHelper: 'System log and task log files', + systemLog: 'Log file', + systemLogHelper: 'System logs, task logs, website log files', dockerLog: 'Container operation log files', taskLog: 'Scheduled task execution log files', shell: 'Shell script scheduled tasks', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 75680fcb9..9a04f66ec 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -2233,8 +2233,9 @@ const message = { download: 'Archivos temporales de descarga', downloadHelper: 'Archivos temporales descargados desde respaldos externos', directory: 'Directorio', - systemLog: 'Archivos de log del sistema', - systemLogHelper: 'Archivos de registro del sistema y de tareas', + + systemLog: 'Archivo de registro', + systemLogHelper: 'Registros del sistema, registros de tareas, archivos de registro del sitio web', dockerLog: 'Archivos de registro de operaciones de contenedores', taskLog: 'Archivos de registro de ejecución de tareas programadas', shell: 'Tareas programadas de script de shell', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 483c8ac1a..03b20e7e7 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -2141,8 +2141,8 @@ const message = { downloadHelper: 'システムによってサードパーティのバックアップアカウントからダウンロードされた一時ファイル', directory: 'ディレクトリ', - systemLog: 'システムログファイル', - systemLogHelper: 'システムログ、タスクログファイル', + systemLog: 'ログファイル', + systemLogHelper: 'システムログ、タスクログ、ウェブサイトログファイル', dockerLog: 'コンテナ操作ログファイル', taskLog: 'スケジュールタスク実行ログファイル', shell: 'シェルスクリプトスケジュールタスク', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 361c8db9c..6fa6eabb4 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -2105,8 +2105,8 @@ const message = { downloadHelper: '시스템에서 제3자 백업 계정으로 다운로드된 임시 파일', directory: '디렉터리', - systemLog: '시스템 로그 파일', - systemLogHelper: '시스템 로그, 작업 로그 파일', + systemLog: '로그 파일', + systemLogHelper: '시스템 로그, 작업 로그, 웹사이트 로그 파일', dockerLog: '컨테이너 작업 로그 파일', taskLog: '예약 작업 실행 로그 파일', shell: '셸 스크립트 예약 작업', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index 3e3c463c6..5feb264fb 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -2200,8 +2200,8 @@ const message = { downloadHelper: 'Fail sementara dimuat turun dari akaun sandaran pihak ketiga oleh sistem', directory: 'Direktori', - systemLog: 'Fail Log Sistem', - systemLogHelper: 'Fail log sistem dan log tugas', + systemLog: 'Fail log', + systemLogHelper: 'Log sistem, log tugas, fail log laman web', dockerLog: 'Fail log operasi bekas', taskLog: 'Fail log pelaksanaan tugas berjadual', shell: 'Tugas berjadual skrip Shell', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index 978902f2e..5249b2123 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -2194,8 +2194,8 @@ const message = { downloadHelper: 'Arquivos temporários baixados de contas de backup de terceiros pelo sistema', directory: 'Diretório', - systemLog: 'Arquivos de log do sistema', - systemLogHelper: 'Arquivos de log do sistema e de tarefas', + systemLog: 'Arquivo de log', + systemLogHelper: 'Logs do sistema, logs de tarefas, arquivos de log do site', dockerLog: 'Arquivos de log de operação de contêineres', taskLog: 'Arquivos de log de execução de tarefas agendadas', shell: 'Tarefas agendadas de script de shell', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 69c776234..dd6ed2c50 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -2189,8 +2189,8 @@ const message = { downloadHelper: 'Временные файлы, скачанные из сторонних аккаунтов резервного копирования системой', directory: 'Директория', - systemLog: 'Системные файлы логов', - systemLogHelper: 'Файлы системных журналов и журналов задач', + systemLog: 'Файл журнала', + systemLogHelper: 'Системные журналы, журналы задач, файлы журналов веб-сайта', dockerLog: 'Файлы журналов операций с контейнерами', taskLog: 'Файлы журналов выполнения запланированных задач', shell: 'Запланированные задачи скриптов оболочки', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 1b71a966e..de80f453e 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -2246,8 +2246,8 @@ const message = { downloadHelper: 'Sistem tarafından üçüncü taraf yedek hesaplarından indirilen geçici dosyalar', directory: 'Dizin', - systemLog: 'Sistem Günlük Dosyaları', - systemLogHelper: 'Sistem günlüğü ve görev günlüğü dosyaları', + systemLog: 'Günlük dosyası', + systemLogHelper: 'Sistem günlükleri, görev günlükleri, web sitesi günlük dosyaları', dockerLog: 'Konteyner işlem günlüğü dosyaları', taskLog: 'Zamanlanmış görev yürütme günlüğü dosyaları', shell: 'Shell script zamanlanmış görevler', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index bc47ba932..9b3220bfc 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -2070,8 +2070,8 @@ const message = { downloadHelper: '系統從第三方備份帳號下載的暫存檔', directory: '資料夾', - systemLog: '系統日誌檔案', - systemLogHelper: '系統日誌、任務日誌檔案', + systemLog: '日誌檔案', + systemLogHelper: '系統日誌、任務日誌、網站日誌檔案', dockerLog: '容器操作日誌檔案', taskLog: '計劃任務執行日誌檔案', shell: 'Shell 腳本計劃任務', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index b423f1993..1277c8315 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -2067,8 +2067,8 @@ const message = { downloadHelper: '系统从第三方备份账号下载的临时文件', directory: '文件夹', - systemLog: '系统日志文件', - systemLogHelper: '系统日志、任务日志文件', + systemLog: '日志文件', + systemLogHelper: '系统日志、任务日志、网站日志文件', dockerLog: '容器操作日志文件', taskLog: '计划任务执行日志文件', shell: 'Shell 脚本计划任务', diff --git a/frontend/src/views/toolbox/clean/index.vue b/frontend/src/views/toolbox/clean/index.vue index 68360865f..6015d08fa 100644 --- a/frontend/src/views/toolbox/clean/index.vue +++ b/frontend/src/views/toolbox/clean/index.vue @@ -630,6 +630,8 @@ function load18n(label: string) { return i18n.global.t('clean.volumes'); case 'build_cache': return i18n.global.t('clean.buildCache'); + case 'website_log': + return i18n.global.t('logs.websiteLog'); default: return label; }