问题描述
我在Spring Boot Loggin方面苦苦挣扎。我无法在控制台上打印log.info或log.error。 这也是我的pom.xml文件和application.properties。 我想知道为什么这种现象会发生,因为我的pom文件中没有任何特定的声明。
<?xml version="1.0" encoding="UTF-8"?>
4.0.0 org.springframework.boot 弹簧启动启动器父母 2.4.0快照 com.jgeekmz 管理应用 0.0.1-快照 管理应用 申请管理
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>2.0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.nulab-inc/zxcvbn -->
<dependency>
<groupId>com.nulab-inc</groupId>
<artifactId>zxcvbn</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-commons</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
<pluginRepository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
package com.jgeekmz.ManagementApp;
import com.jgeekmz.ManagementApp.models.Post;
import com.jgeekmz.ManagementApp.models.User;
import com.jgeekmz.ManagementApp.repositories.*;
import com.jgeekmz.ManagementApp.services.PostService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springframework.web.servlet.view.RedirectView;
@控制器 公共类ApplicationController { 记录器日志= LoggerFactory.getLogger(ApplicationController.class);
private final VehicleRepository vehicleRepo;
private final EmployeeRepository employeeRepo;
private final LocationRepository locationRepo;
private final PostService postService;
private final PostRepository postRepo;
private final UserRepository userRepository;
@Autowired
public ApplicationController(VehicleRepository vehicleRepo,EmployeeRepository employeeRepo,LocationRepository locationRepo,PostService postService,PostRepository postRepo,UserRepository
userRepository) {
this.vehicleRepo = vehicleRepo;
this.employeeRepo = employeeRepo;
this.locationRepo = locationRepo;
this.postService = postService;
this.postRepo = postRepo;
this.userRepository = userRepository;
}
//Index page plus count vehicles,users,employees,locations. Find all posts.
@RequestMapping(value = "/index",method = RequestMethod.GET)
public String goHome(Model model) {
// System.out.println(model);
// System.out.println(repo);
// long t = repo.count();
// System.out.println(t);
// System.out.println(postRepo);
model.addAttribute("tcount",vehicleRepo.count());
model.addAttribute("empcount",employeeRepo.count());
model.addAttribute("locations",locationRepo.count());
model.addAttribute("posts",postRepo.findAll());
model.addAttribute("tusers",userRepository.count());
return "index";
}
@RequestMapping("/")
public String goDashboard() {
return "/index";
}
//Add new post on the index page
@RequestMapping(value = "/index/addNewPost",method = RequestMethod.POST)
public String addNewPost(Post post) {
System.out.println(post);
postService.save(post);
return "redirect:/index";
}
//@GetMapping("/users/checkUser")
@RequestMapping(value = "/users/checkUser",method = RequestMethod.GET)
public RedirectView checkUser(@ModelAttribute("user") User user,RedirectAttributes redir) {
//User usr = new User();
String usrName = user.getUsername();
log.info("User" + usrName);
User userName = userRepository.findByUsername(usrName);
Boolean checkUserValidation;
checkUserValidation = userRepository.findByEnabled(usrName);
/* User valid = userRepository.findByEnabled(usrName);
System.out.println(valid);*/
RedirectView redirectView = new RedirectView("/login",true);
RedirectView redirectViewTwo = new RedirectView("/index",true);
redir.addFlashAttribute("messageUserNotExist","User is not being registered!");
// redir.addFlashAttribute("messageUserExist","User already exist!");
log.error(">>>> Logged user: " + userRepository.findByUsername(usrName));
if (userName != null) {
if (checkUserValidation) {
log.error("User exist!");
System.out.println("Logged in!");
System.err.println("This is an error message");
return redirectViewTwo;
}
}
log.error("User does not exist!");
return redirectView;
}
/* //Going to home page
@GetMapping("/index")
public String goHome () { return "index"; }*/
@GetMapping("/login")
public String login() {
return "login";
}
@GetMapping("/changePassword")
public String changePassword() {
return "changePassword";
}
@GetMapping("/logout")
public String logout() {
return "login";
}
/* @GetMapping("/register")
public String register(@ModelAttribute("user") User user) { return "register"; }*/
@GetMapping("/blank")
public String getBlank() {
return "blank";
}
}
解决方法
启用对application.properties的登录
logging.level.root=WARN
logging.level.com.jgeekmz=DEBUG
logging.pattern.console=%clr(%5p) [%logger{0}] %m%n
,
我认为如果要指定要执行的操作,则应该添加logback.xml文件,必须将其添加到ressources文件夹中:
这里是一个示例,您可以在其中记录特定的软件包...:
page.bringToFront
,
nope仍然无法在控制台上进行日志记录。我已经添加了dev-tool依赖项,但是仍然无法打印任何类型的调试跟踪。
我的支票映射:
public function __construct()
{
$this->middleware('auth:api');
}
我的Spring Security设置:
@RequestMapping(value = "/checkUser",method = RequestMethod.POST)
public RedirectView checkUser(User user,RedirectAttributes redir) {
System.out.println("HERE!");
//User usr = new User();
String usrName = user.getUsername();
User userName = userRepository.findByUsername(usrName);
Boolean checkUserValidation;
checkUserValidation = userRepository.findByEnabled(usrName);
/* User valid = userRepository.findByEnabled(usrName);*/
RedirectView redirectView = new RedirectView("/login",true);
RedirectView redirectViewTwo = new RedirectView("/index",true);
redir.addFlashAttribute("messageUserNotExist","User is not being registered!");
redir.addFlashAttribute("messageUserExist","User already exist!");
if (userName != null) {
if (checkUserValidation) {
System.out.println("User is logged in!!!!!!!!!!!" +
userRepository.findByUsername(usrName));
System.out.println("HERE!");
return redirectViewTwo;
} else {
System.out.println("FALSE");
}
}
return redirectView;
}
基本上,我想让管理员首先激活该帐户,然后让用户收到一封带有确认消息的电子邮件,该消息表明他的帐户现在处于活动状态并且可以登录。我的想法是进行此映射,然后进行检查并而不是让他登录。但是我认为该映射在我使用Spring Security时无法正常工作,并且一切正常。
这是正确的方法还是我应该实现UserDetailService并使用它。
也是我的登录表单部分:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/registerPage2","/login","/confirm","/users/**","/resources/**","/css/**","/js/**","/fonts/**","/img/**").permitAll()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll()
.loginProcessingUrl("/checkUser")
.defaultSuccessUrl("/index",true)
.and()
.logout()
.invalidateHttpSession(true)
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login").permitAll();
}