From 6fc0ff29f17194cafaa00c7fe09b47f42be0f620 Mon Sep 17 00:00:00 2001 From: Patrik Fallqvist Magnusson Date: Sun, 8 May 2022 14:38:21 +0200 Subject: [PATCH 1/3] Add bean for Log4j logger --- .../se/iths/imagestorage/beans/BeansConfig.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/se/iths/imagestorage/beans/BeansConfig.java diff --git a/src/main/java/se/iths/imagestorage/beans/BeansConfig.java b/src/main/java/se/iths/imagestorage/beans/BeansConfig.java new file mode 100644 index 0000000..377de46 --- /dev/null +++ b/src/main/java/se/iths/imagestorage/beans/BeansConfig.java @@ -0,0 +1,16 @@ +package se.iths.imagestorage.beans; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InjectionPoint; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class BeansConfig { + + @Bean + public Logger getLogger(InjectionPoint ip) { + return LoggerFactory.getLogger(ip.getMember().getDeclaringClass()); + } +} From 1ad10d256e05ecf61d8aea3b137640096b856deb Mon Sep 17 00:00:00 2001 From: Patrik Fallqvist Magnusson Date: Sun, 8 May 2022 14:38:38 +0200 Subject: [PATCH 2/3] Add logging for FileSystemRepository --- .../repository/FileSystemRepository.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/se/iths/imagestorage/repository/FileSystemRepository.java b/src/main/java/se/iths/imagestorage/repository/FileSystemRepository.java index fda8ebf..4a747ae 100644 --- a/src/main/java/se/iths/imagestorage/repository/FileSystemRepository.java +++ b/src/main/java/se/iths/imagestorage/repository/FileSystemRepository.java @@ -1,7 +1,6 @@ package se.iths.imagestorage.repository; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.core.io.FileSystemResource; import org.springframework.stereotype.Repository; import org.springframework.web.multipart.MultipartFile; @@ -15,24 +14,33 @@ @Repository public class FileSystemRepository { - private final Logger log = LoggerFactory.getLogger(FileSystemRepository.class); + private final Logger log; + + public FileSystemRepository(Logger log) { + this.log = log; + } public void uploadImage(MultipartFile file, Image image){ Path path = Paths.get(image.getPath()); try { + log.info("Checking and creating directory..."); Files.createDirectories(path.getParent()); byte[] bytes = file.getBytes(); + log.info("Attempting to upload file..."); Files.write(path, bytes); + log.info("Image successfully uploaded to: {}", path); } catch (IOException e) { - log.error("Error: {0}"); + log.error("Error: {1}", e); } } public FileSystemResource findInFileSystem(String path){ - try{ + try { + log.info("Attempting to download file at: {}", path); return new FileSystemResource(Paths.get(path)); - }catch (InvalidPathException e){ + } catch (InvalidPathException e) { + log.error("No file found at: {}", path); throw new RuntimeException(e); } } From 232edb895a7174dae3ced2b38ffb3f1630c65679 Mon Sep 17 00:00:00 2001 From: Patrik Fallqvist Magnusson Date: Sun, 8 May 2022 14:38:45 +0200 Subject: [PATCH 3/3] Add logging for ImageService --- .../imagestorage/service/ImageService.java | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/se/iths/imagestorage/service/ImageService.java b/src/main/java/se/iths/imagestorage/service/ImageService.java index c189e62..2105b0a 100644 --- a/src/main/java/se/iths/imagestorage/service/ImageService.java +++ b/src/main/java/se/iths/imagestorage/service/ImageService.java @@ -1,6 +1,7 @@ package se.iths.imagestorage.service; +import org.slf4j.Logger; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; @@ -12,30 +13,52 @@ import se.iths.imagestorage.repository.ImageDbRepository; import java.nio.file.Paths; +import java.time.LocalDateTime; @Service public class ImageService { private final ImageDbRepository imageDbRepository; private final FileSystemRepository fileSystemRepository; + private final Logger log; - public ImageService(ImageDbRepository imageDbRepository, FileSystemRepository fileSystemRepository) { + public ImageService(ImageDbRepository imageDbRepository, FileSystemRepository fileSystemRepository, Logger log) { this.imageDbRepository = imageDbRepository; this.fileSystemRepository = fileSystemRepository; + this.log = log; } public Long uploadImage(MultipartFile imageAsFile){ + log.info("File upload started at: {}", LocalDateTime.now()); + Image image = new Image(); - image.setName(imageAsFile.getOriginalFilename()); - image.setPath(setImagePath() + imageAsFile.getOriginalFilename()); + log.info("Setting Image name..."); + String imageName = imageAsFile.getOriginalFilename(); + image.setName(imageName); + log.info("Image name set to: {}", imageName); + + log.info("Setting Image path..."); + String imagePath = setImagePath() + imageAsFile.getOriginalFilename(); + image.setPath(imagePath); + log.info("Image path set to: {}", imagePath); + fileSystemRepository.uploadImage(imageAsFile,image); return imageDbRepository.save(image).getId(); } public FileSystemResource downloadImage(Long id){ + log.info("File download started at: {}", LocalDateTime.now()); + + log.info("Attempting to find image with ID: {}", id); Image image = imageDbRepository.findById(id) - .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND)); + .orElseThrow(() -> { + log.error("No file with ID {} found", id); + return new ResponseStatusException(HttpStatus.NOT_FOUND); + }); + + log.info("Image with ID {} found", id); + return fileSystemRepository.findInFileSystem(image.getPath()); } private String setImagePath(){