diff --git a/src/core/views/auth.py b/src/core/views/auth.py
index a5ac41e65620789f151136238ad991eeb22da6db..288c03154c8b327f5678c9c8b3e1ca0abdefa699 100644
--- a/src/core/views/auth.py
+++ b/src/core/views/auth.py
@@ -40,10 +40,16 @@ class BaseLoginView(LoginView):
     def get_form_kwargs(self) -> dict[str, Any]:
         return {'with_theme_switcher': self.with_theme_switcher, **super().get_form_kwargs()}
 
-    def form_valid(self, form):
+    def form_invalid(self, form: LoginForm) -> HttpResponse:
+        logger.info('Invalid login attempt for username %s logged from %s', form.cleaned_data.get("username"), self.request.META.get('REMOTE_ADDR'))
+        return super().form_invalid(form)
+
+    def form_valid(self, form: LoginForm):
         user = form.get_user()
         self.request.session['theme'] = form.cleaned_data.get('theme', user.theme)
-        return super().form_valid(form)
+        res = super().form_valid(form)
+        logger.info('User %s logged in from %s', user.username, self.request.META.get('REMOTE_ADDR'))
+        return res
 
 
 class BasePasswordResetView(PasswordResetView):