mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-12-27 09:49:28 +08:00
feat: add website log cleanup option to cache cleaning (#11457)
This commit is contained in:
parent
f27a429fc5
commit
aa1bc6fa8e
13 changed files with 82 additions and 37 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 ""
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -2141,8 +2141,8 @@ const message = {
|
|||
downloadHelper: 'システムによってサードパーティのバックアップアカウントからダウンロードされた一時ファイル',
|
||||
directory: 'ディレクトリ',
|
||||
|
||||
systemLog: 'システムログファイル',
|
||||
systemLogHelper: 'システムログ、タスクログファイル',
|
||||
systemLog: 'ログファイル',
|
||||
systemLogHelper: 'システムログ、タスクログ、ウェブサイトログファイル',
|
||||
dockerLog: 'コンテナ操作ログファイル',
|
||||
taskLog: 'スケジュールタスク実行ログファイル',
|
||||
shell: 'シェルスクリプトスケジュールタスク',
|
||||
|
|
|
|||
|
|
@ -2105,8 +2105,8 @@ const message = {
|
|||
downloadHelper: '시스템에서 제3자 백업 계정으로 다운로드된 임시 파일',
|
||||
directory: '디렉터리',
|
||||
|
||||
systemLog: '시스템 로그 파일',
|
||||
systemLogHelper: '시스템 로그, 작업 로그 파일',
|
||||
systemLog: '로그 파일',
|
||||
systemLogHelper: '시스템 로그, 작업 로그, 웹사이트 로그 파일',
|
||||
dockerLog: '컨테이너 작업 로그 파일',
|
||||
taskLog: '예약 작업 실행 로그 파일',
|
||||
shell: '셸 스크립트 예약 작업',
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -2189,8 +2189,8 @@ const message = {
|
|||
downloadHelper: 'Временные файлы, скачанные из сторонних аккаунтов резервного копирования системой',
|
||||
directory: 'Директория',
|
||||
|
||||
systemLog: 'Системные файлы логов',
|
||||
systemLogHelper: 'Файлы системных журналов и журналов задач',
|
||||
systemLog: 'Файл журнала',
|
||||
systemLogHelper: 'Системные журналы, журналы задач, файлы журналов веб-сайта',
|
||||
dockerLog: 'Файлы журналов операций с контейнерами',
|
||||
taskLog: 'Файлы журналов выполнения запланированных задач',
|
||||
shell: 'Запланированные задачи скриптов оболочки',
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -2070,8 +2070,8 @@ const message = {
|
|||
downloadHelper: '系統從第三方備份帳號下載的暫存檔',
|
||||
directory: '資料夾',
|
||||
|
||||
systemLog: '系統日誌檔案',
|
||||
systemLogHelper: '系統日誌、任務日誌檔案',
|
||||
systemLog: '日誌檔案',
|
||||
systemLogHelper: '系統日誌、任務日誌、網站日誌檔案',
|
||||
dockerLog: '容器操作日誌檔案',
|
||||
taskLog: '計劃任務執行日誌檔案',
|
||||
shell: 'Shell 腳本計劃任務',
|
||||
|
|
|
|||
|
|
@ -2067,8 +2067,8 @@ const message = {
|
|||
downloadHelper: '系统从第三方备份账号下载的临时文件',
|
||||
directory: '文件夹',
|
||||
|
||||
systemLog: '系统日志文件',
|
||||
systemLogHelper: '系统日志、任务日志文件',
|
||||
systemLog: '日志文件',
|
||||
systemLogHelper: '系统日志、任务日志、网站日志文件',
|
||||
dockerLog: '容器操作日志文件',
|
||||
taskLog: '计划任务执行日志文件',
|
||||
shell: 'Shell 脚本计划任务',
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue