From 590ee771c117e3cbe83c470cb21c279e2227ed37 Mon Sep 17 00:00:00 2001 From: Joseph Milazzo Date: Wed, 28 Jul 2021 15:07:06 -0500 Subject: [PATCH 1/5] Refactored logs to use a logs/ folder and also roll over after 10MB. A maximum of 5 logs will persist (50MB of log data). --- API/Services/Tasks/BackupService.cs | 19 ++++++++++--------- API/appsettings.Development.json | 6 +++--- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/API/Services/Tasks/BackupService.cs b/API/Services/Tasks/BackupService.cs index a5b115c3f..e04e5373f 100644 --- a/API/Services/Tasks/BackupService.cs +++ b/API/Services/Tasks/BackupService.cs @@ -20,6 +20,7 @@ namespace API.Services.Tasks private readonly ILogger _logger; private readonly IDirectoryService _directoryService; private readonly string _tempDirectory = Path.Join(Directory.GetCurrentDirectory(), "temp"); + private readonly string _logDirectory = Path.Join(Directory.GetCurrentDirectory(), "logs"); private readonly IList _backupFiles; @@ -28,7 +29,7 @@ namespace API.Services.Tasks _unitOfWork = unitOfWork; _logger = logger; _directoryService = directoryService; - + var maxRollingFiles = config.GetMaxRollingFiles(); var loggingSection = config.GetLoggingFileName(); var files = LogFiles(maxRollingFiles, loggingSection); @@ -53,7 +54,7 @@ namespace API.Services.Tasks var fi = new FileInfo(logFileName); var files = maxRollingFiles > 0 - ? _directoryService.GetFiles(Directory.GetCurrentDirectory(), $@"{fi.Name}{multipleFileRegex}\.log") + ? _directoryService.GetFiles(_logDirectory, $@"{Path.GetFileNameWithoutExtension(fi.Name)}{multipleFileRegex}\.log") : new[] {"kavita.log"}; return files; } @@ -63,17 +64,17 @@ namespace API.Services.Tasks { _logger.LogInformation("Beginning backup of Database at {BackupTime}", DateTime.Now); var backupDirectory = Task.Run(() => _unitOfWork.SettingsRepository.GetSettingAsync(ServerSettingKey.BackupDirectory)).Result.Value; - + _logger.LogDebug("Backing up to {BackupDirectory}", backupDirectory); if (!DirectoryService.ExistOrCreate(backupDirectory)) { _logger.LogError("Could not write to {BackupDirectory}; aborting backup", backupDirectory); return; } - + var dateString = DateTime.Now.ToShortDateString().Replace("/", "_"); var zipPath = Path.Join(backupDirectory, $"kavita_backup_{dateString}.zip"); - + if (File.Exists(zipPath)) { _logger.LogInformation("{ZipFile} already exists, aborting", zipPath); @@ -83,7 +84,7 @@ namespace API.Services.Tasks var tempDirectory = Path.Join(_tempDirectory, dateString); DirectoryService.ExistOrCreate(tempDirectory); DirectoryService.ClearDirectory(tempDirectory); - + _directoryService.CopyFilesToDirectory( _backupFiles.Select(file => Path.Join(Directory.GetCurrentDirectory(), file)).ToList(), tempDirectory); try @@ -142,10 +143,10 @@ namespace API.Services.Tasks _logger.LogError(ex, "There was an issue deleting {FileName}", file.Name); } } - + } _logger.LogInformation("Finished cleanup of Database backups at {Time}", DateTime.Now); } - + } -} \ No newline at end of file +} diff --git a/API/appsettings.Development.json b/API/appsettings.Development.json index 35e9218b9..9d93e100a 100644 --- a/API/appsettings.Development.json +++ b/API/appsettings.Development.json @@ -17,10 +17,10 @@ "Microsoft.AspNetCore.Hosting.Internal.WebHost": "Information" }, "File": { - "Path": "kavita.log", + "Path": "logs/kavita.log", "Append": "True", - "FileSizeLimitBytes": 0, - "MaxRollingFiles": 0 + "FileSizeLimitBytes": 10485760, + "MaxRollingFiles": 5 } }, "Port": 5000 From b0a623dbc2c054f6d3fdcc9f67a07836e01d3c7e Mon Sep 17 00:00:00 2001 From: Chris Plaajtes Date: Wed, 28 Jul 2021 16:19:15 -0400 Subject: [PATCH 2/5] Updated entrypoint to accomodate new logs folder --- entrypoint.sh | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 3a5328354..0db3d824a 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -46,6 +46,20 @@ else ln -s /kavita/data/cache /kavita/cache fi +if [ -d /kavita/data/logs ] +then + if [ -d /kavita/logs ] + then + unlink /kavita/logs + ln -s /kavita/data/logs /kavita/logs + else + ln -s /kavita/data/logs /kavita/logs + fi +else + mkdir /kavita/data/logs + ln -s /kavita/data/logs /kavita/logs +fi + if [ -d /kavita/data/stats ] then if [ -d /kavita/stats ] @@ -60,25 +74,6 @@ else ln -s /kavita/data/stats /kavita/stats fi -# Checks for the log file - -if test -f "/kavita/data/logs/kavita.log" -then - rm /kavita/kavita.log - ln -s /kavita/data/logs/kavita.log /kavita/ -else - if [ -d /kavita/data/logs ] - then - echo "" > /kavita/data/logs/kavita.log || true - ln -s /kavita/data/logs/kavita.log /kavita/ - else - mkdir /kavita/data/logs - echo "" > /kavita/data/logs/kavita.log || true - ln -s /kavita/data/logs/kavita.log /kavita/ - fi - -fi - chmod +x ./Kavita ./Kavita From 0b99277923938c8af5aba2116c0f774f05765333 Mon Sep 17 00:00:00 2001 From: Chris Plaajtes Date: Tue, 3 Aug 2021 12:58:16 -0400 Subject: [PATCH 3/5] Merged docker tagging actions into one --- .github/workflows/stable-docker.yml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.github/workflows/stable-docker.yml b/.github/workflows/stable-docker.yml index 9f4dc8363..cea58295b 100644 --- a/.github/workflows/stable-docker.yml +++ b/.github/workflows/stable-docker.yml @@ -81,16 +81,7 @@ jobs: context: . platforms: linux/amd64,linux/arm/v7,linux/arm64 push: true - tags: kizaing/kavita:latest - - - name: Build and push - id: docker_build - uses: docker/build-push-action@v2 - with: - context: . - platforms: linux/amd64,linux/arm/v7,linux/arm64 - push: true - tags: kizaing/kavita:${{ steps.parse-version.outputs.VERSION }} + tags: kizaing/kavita:latest, kizaing/kavita:${{ steps.parse-version.outputs.VERSION }} - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} From 9a6cd5ca492109993ad256a886cfbd67e6ab63a0 Mon Sep 17 00:00:00 2001 From: Chris Plaatjes Date: Thu, 5 Aug 2021 01:14:04 -0400 Subject: [PATCH 4/5] Cleaned up and fixed old docker files --- Dockerfile.alpine | 28 ---------------------------- Dockerfile.arm | 27 --------------------------- docker-compose.yml | 3 --- 3 files changed, 58 deletions(-) delete mode 100644 Dockerfile.alpine delete mode 100644 Dockerfile.arm diff --git a/Dockerfile.alpine b/Dockerfile.alpine deleted file mode 100644 index faacfa823..000000000 --- a/Dockerfile.alpine +++ /dev/null @@ -1,28 +0,0 @@ -#This Dockerfile is for the musl alpine build of Kavita. -FROM alpine:latest - -MAINTAINER Chris P - -#Installs the needed dependencies -RUN apk update && apk add --no-cache wget curl pwgen icu-dev bash - -#Downloads Kavita, unzips and moves the folders to where they need to be -RUN wget https://github.com/Kareadita/Kavita/releases/download/v0.3.7/kavita-linux-musl-x64.tar.gz \ - && tar -xzf kavita*.tar.gz \ - && mv Kavita/ /kavita/ \ - && rm kavita*.gz \ - && chmod +x /kavita/Kavita - -#Creates the needed folders -RUN mkdir /manga /kavita/data /kavita/temp /kavita/cache - -RUN sed -i 's/Data source=kavita.db/Data source=data\/kavita.db/g' /kavita/appsettings.json - -COPY entrypoint.sh /entrypoint.sh - -EXPOSE 5000 - -WORKDIR /kavita - -ENTRYPOINT ["/bin/bash"] -CMD ["/entrypoint.sh"] diff --git a/Dockerfile.arm b/Dockerfile.arm deleted file mode 100644 index e28430a38..000000000 --- a/Dockerfile.arm +++ /dev/null @@ -1,27 +0,0 @@ -#This Dockerfile pulls the latest git commit and builds Kavita from source - -#Production image -FROM ubuntu:focal - -#Move the output files to where they need to be -COPY Kavita /kavita - -#Installs program dependencies -RUN apt-get update \ - && apt-get install -y libicu-dev libssl1.1 pwgen \ - && rm -rf /var/lib/apt/lists/* - -#Creates the manga storage directory -RUN mkdir /kavita/data - -RUN cp /kavita/appsettings.Development.json /kavita/appsettings.json \ - && sed -i 's/Data source=kavita.db/Data source=data\/kavita.db/g' /kavita/appsettings.json - -COPY entrypoint.sh /entrypoint.sh - -EXPOSE 5000 - -WORKDIR /kavita - -ENTRYPOINT ["/bin/bash"] -CMD ["/entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml index fe479badd..15623731a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,10 +4,7 @@ services: image: kizaing/kavita:latest volumes: - ./manga:/manga - - ./data/temp:/kavita/temp - - ./data/cache:/kavita/cache - ./data:/kavita/data - - ./data/logs:/kavita/logs ports: - "5000:5000" restart: unless-stopped From 6b2d1215977cd39faa1a2225310312a64ad9df72 Mon Sep 17 00:00:00 2001 From: Chris Plaatjes Date: Fri, 27 Aug 2021 18:08:32 -0400 Subject: [PATCH 5/5] Added fix to copy appsettings.json --- build.sh | 4 +++- monorepo-build.sh | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/build.sh b/build.sh index ccecbd597..2e76cfdf0 100755 --- a/build.sh +++ b/build.sh @@ -97,7 +97,6 @@ Package() cp ../LICENSE "$lOutputFolder"/LICENSE.txt echo "Renaming API -> Kavita" - if [ $runtime == "win-x64" ] || [ $runtime == "win-x86" ] then mv "$lOutputFolder"/API.exe "$lOutputFolder"/Kavita.exe @@ -105,6 +104,9 @@ Package() mv "$lOutputFolder"/API "$lOutputFolder"/Kavita fi + echo "Copying appsettings.json" + cp appsettings.Development.json $lOutputFolder/appsettings.json + echo "Creating tar" cd ../$outputFolder/"$runtime"/ tar -czvf ../kavita-$runtime.tar.gz Kavita diff --git a/monorepo-build.sh b/monorepo-build.sh index 826184a04..be452b235 100755 --- a/monorepo-build.sh +++ b/monorepo-build.sh @@ -56,6 +56,9 @@ Package() echo "Show API structure" find + + echo "Copying appsettings.json" + cp appsettings.Development.json $lOutputFolder/appsettings.json echo "Creating tar" cd ../$outputFolder/"$runtime"/