diff --git a/.gitignore b/.gitignore
index 6366460f0..52c780c05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
-.idea/*
-*.iml
-target/*
+# logs
+logs/
+*.log
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 000000000..26d33521a
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 000000000..a0016596d
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 000000000..aa00ffab7
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 000000000..712ab9d98
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 000000000..f88c0a7df
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 000000000..35eb1ddfb
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index d524faa08..4f1967df2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,6 +18,18 @@
+
+ org.slf4j
+ slf4j-api
+ 2.0.9
+
+
+
+ ch.qos.logback
+ logback-classic
+ 1.4.11
+
+
junit
junit
diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java
index 085758fbf..d2e09f58d 100644
--- a/src/main/java/mate/academy/Main.java
+++ b/src/main/java/mate/academy/Main.java
@@ -6,17 +6,28 @@
import mate.academy.service.AuthenticationServiceImpl;
import mate.academy.service.OrderService;
import mate.academy.service.OrderServiceImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class Main {
+ private static final Logger logger = LoggerFactory.getLogger(Main.class);
+
public static void main(String[] args) {
+ logger.info("Application started");
+
AuthenticationService authenticationService = new AuthenticationServiceImpl();
User user;
+
+ String login = "bob";
+ String password = "1234";
+
try {
- user = authenticationService.login("bob", "1234");
+ user = authenticationService.login(login, password);
} catch (AuthenticationException e) {
- e.printStackTrace();
+ logger.error("Login failed for user. login={}", login, e);
return;
}
+
OrderService orderService = new OrderServiceImpl();
orderService.completeOrder(user.getUserId());
}
diff --git a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java
index f9fe83b70..095dbd04a 100644
--- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java
+++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java
@@ -2,21 +2,29 @@
import mate.academy.exception.AuthenticationException;
import mate.academy.model.User;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class AuthenticationServiceImpl implements AuthenticationService {
+ private static final Logger logger =
+ LoggerFactory.getLogger(AuthenticationServiceImpl.class);
+
@Override
public User login(String login, String password) throws AuthenticationException {
- //TODO: add corresponding log message about method login was called
+ logger.debug("Method login was called. Params: login={}", login);
+
User user = findByLogin(login);
+
if (!user.getPassword().equals(password)) {
+ logger.warn("Invalid password for login={}", login);
throw new AuthenticationException("Username or password are incorrect");
}
+ logger.info("User successfully logged in. userId={}", user.getUserId());
return user;
}
private User findByLogin(String login) {
User user = new User(login, "1234");
- // this user identifier should be set by DB. We will use dummy data for this example
user.setUserId(2L);
return user;
}
diff --git a/src/main/java/mate/academy/service/OrderServiceImpl.java b/src/main/java/mate/academy/service/OrderServiceImpl.java
index eeabe1555..b75aa0ea1 100644
--- a/src/main/java/mate/academy/service/OrderServiceImpl.java
+++ b/src/main/java/mate/academy/service/OrderServiceImpl.java
@@ -4,16 +4,25 @@
import java.util.List;
import mate.academy.model.Order;
import mate.academy.model.Product;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class OrderServiceImpl implements OrderService {
+ private static final Logger logger =
+ LoggerFactory.getLogger(OrderServiceImpl.class);
+
@Override
public Order completeOrder(Long userId) {
- // TODO: add log message about method completeOrder was called
+ logger.info("Method completeOrder was called. Params: userId={}", userId);
+
List products = getAllProductsFromShoppingCart(userId);
Order order = new Order(products, userId);
// NOTE: In production ready code this order identifier should be generated by DB
// For test purpose we simplify this and return dummy data
order.setOrderId(1L);
+
+ logger.info("Order completed successfully. orderId={}, userId={}",
+ order.getOrderId(), userId);
return order;
}
@@ -23,8 +32,12 @@ private List getAllProductsFromShoppingCart(Long userId) {
Product iphone = new Product("iPhone X", BigDecimal.valueOf(1199));
Product macBook = new Product("MacBook Air 2020", BigDecimal.valueOf(1399));
Product xiaomi = new Product("Xiaomi 12", BigDecimal.valueOf(499));
+
List products = List.of(iphone, macBook, xiaomi);
- // TODO: add log message about successful fetched data from DB
+
+ logger.debug("Products fetched from DB successfully. userId={}, count={}",
+ userId, products.size());
+
return products;
}
}
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
new file mode 100644
index 000000000..1d66d622b
--- /dev/null
+++ b/src/main/resources/logback.xml
@@ -0,0 +1,21 @@
+
+
+ logs/app.log
+ true
+
+ %d{yyyy-MM-dd HH:mm:ss} [%level] [%thread] %logger{10} - %msg%n
+
+
+
+
+
+ %d{HH:mm:ss} [%level] %logger{10} - %msg%n
+
+
+
+
+
+
+
+
+
diff --git a/target/checkstyle-cachefile b/target/checkstyle-cachefile
new file mode 100644
index 000000000..2845f5dc6
--- /dev/null
+++ b/target/checkstyle-cachefile
@@ -0,0 +1,11 @@
+#Thu Mar 19 16:09:00 CET 2026
+C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\Main.java=1773931834648
+C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\exception\\AuthenticationException.java=1773764970934
+C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\model\\Order.java=1773764970934
+C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\model\\Product.java=1773764970935
+C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\model\\User.java=1773764970936
+C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\service\\AuthenticationService.java=1773764970937
+C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\service\\AuthenticationServiceImpl.java=1773932366339
+C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\service\\OrderService.java=1773764970938
+C\:\\Users\\Admin\\IdeaProjects\\jv-logger\\src\\main\\java\\mate\\academy\\service\\OrderServiceImpl.java=1773932849902
+configuration*?=8630E6DC4E424D54441EA9302A85FDAA43E423CA
diff --git a/target/checkstyle-checker.xml b/target/checkstyle-checker.xml
new file mode 100644
index 000000000..ea0a5295c
--- /dev/null
+++ b/target/checkstyle-checker.xml
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/target/checkstyle-result.xml b/target/checkstyle-result.xml
new file mode 100644
index 000000000..abfd4dadb
--- /dev/null
+++ b/target/checkstyle-result.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/target/classes/logback.xml b/target/classes/logback.xml
new file mode 100644
index 000000000..865b387b7
--- /dev/null
+++ b/target/classes/logback.xml
@@ -0,0 +1,21 @@
+
+
+ logs/app.log
+ true
+
+ %d{yyyy-MM-dd HH:mm:ss} [%level] [%thread] %logger{10} - %msg%n
+
+
+
+
+
+ %d{HH:mm:ss} [%level] %logger{10} - %msg%n
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/classes/mate/academy/Main.class b/target/classes/mate/academy/Main.class
new file mode 100644
index 000000000..c44fa0fb5
Binary files /dev/null and b/target/classes/mate/academy/Main.class differ
diff --git a/target/classes/mate/academy/exception/AuthenticationException.class b/target/classes/mate/academy/exception/AuthenticationException.class
new file mode 100644
index 000000000..340dafd89
Binary files /dev/null and b/target/classes/mate/academy/exception/AuthenticationException.class differ
diff --git a/target/classes/mate/academy/model/Order.class b/target/classes/mate/academy/model/Order.class
new file mode 100644
index 000000000..6e3e67471
Binary files /dev/null and b/target/classes/mate/academy/model/Order.class differ
diff --git a/target/classes/mate/academy/model/Product.class b/target/classes/mate/academy/model/Product.class
new file mode 100644
index 000000000..975532716
Binary files /dev/null and b/target/classes/mate/academy/model/Product.class differ
diff --git a/target/classes/mate/academy/model/User.class b/target/classes/mate/academy/model/User.class
new file mode 100644
index 000000000..6ffa61acb
Binary files /dev/null and b/target/classes/mate/academy/model/User.class differ
diff --git a/target/classes/mate/academy/service/AuthenticationService.class b/target/classes/mate/academy/service/AuthenticationService.class
new file mode 100644
index 000000000..f9a4e9048
Binary files /dev/null and b/target/classes/mate/academy/service/AuthenticationService.class differ
diff --git a/target/classes/mate/academy/service/AuthenticationServiceImpl.class b/target/classes/mate/academy/service/AuthenticationServiceImpl.class
new file mode 100644
index 000000000..414e0f3a0
Binary files /dev/null and b/target/classes/mate/academy/service/AuthenticationServiceImpl.class differ
diff --git a/target/classes/mate/academy/service/OrderService.class b/target/classes/mate/academy/service/OrderService.class
new file mode 100644
index 000000000..95a9022ae
Binary files /dev/null and b/target/classes/mate/academy/service/OrderService.class differ
diff --git a/target/classes/mate/academy/service/OrderServiceImpl.class b/target/classes/mate/academy/service/OrderServiceImpl.class
new file mode 100644
index 000000000..c747e0ded
Binary files /dev/null and b/target/classes/mate/academy/service/OrderServiceImpl.class differ
diff --git a/target/jv-logger-1.0-SNAPSHOT.jar b/target/jv-logger-1.0-SNAPSHOT.jar
new file mode 100644
index 000000000..e41810be7
Binary files /dev/null and b/target/jv-logger-1.0-SNAPSHOT.jar differ
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
new file mode 100644
index 000000000..efb1dcc02
--- /dev/null
+++ b/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=jv-logger
+groupId=mate-academy
+version=1.0-SNAPSHOT
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 000000000..c9a929f24
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,9 @@
+mate\academy\service\OrderServiceImpl.class
+mate\academy\exception\AuthenticationException.class
+mate\academy\model\Order.class
+mate\academy\model\User.class
+mate\academy\service\AuthenticationService.class
+mate\academy\model\Product.class
+mate\academy\service\OrderService.class
+mate\academy\Main.class
+mate\academy\service\AuthenticationServiceImpl.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 000000000..a05fdf064
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,9 @@
+C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\exception\AuthenticationException.java
+C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\service\OrderServiceImpl.java
+C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\model\User.java
+C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\service\AuthenticationServiceImpl.java
+C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\model\Order.java
+C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\model\Product.java
+C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\Main.java
+C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\service\OrderService.java
+C:\Users\Admin\IdeaProjects\jv-logger\src\main\java\mate\academy\service\AuthenticationService.java