在基于Spring的Web应用程序中,我的控制台/日志输出在哪里?

时间:2018-04-19 18:42:39

标签: spring websphere-liberty open-liberty

我正在编写一个简单的基于Spring的Web应用程序并将其部署到Websphere Liberty 8.5.5.9;我已经解决了部署问题,应用程序似乎已经开始了(根据Liberty console.log)。但是,我没有看到任何控制台或日志输出。我的应用程序主类在main方法中包含print语句:

@Configuration
public class UserSettingApplication  extends SpringBootServletInitializer implements WebApplicationInitializer {

    ServletContext servletContext;

    private static final LoggerUtils logger = new LoggerUtils( UserSettingApplication.class );

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        builder.sources(UserSettingApplication.class);
        return builder;
    }
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        servletContext.addListener(RequestContextListener.class);
        this.servletContext=servletContext;
        super.onStartup(servletContext);
    }
    public static void main(String[] args) throws Exception {
        System.out.println( "Entering UserSettingApplication.main" );
        SpringApplicationBuilder applicationBuilder = new UserSettingApplication().configure(new SpringApplicationBuilder());
        applicationBuilder.run(args);
        System.out.println( "Entering UserSettingApplication.main" );
    }
    @Override
    protected WebApplicationContext run(SpringApplication application) {
        WebApplicationContext webApplicationContext = super.run(application);
        Environment env = webApplicationContext.getEnvironment();
        String sessionName = env.getProperty("server.session.cookie.name", "xplore-session-id");
        servletContext.getSessionCookieConfig().setName(sessionName);
        return webApplicationContext;
    }
    @Bean
    protected RequestContextListener requestContextListener() {
        return new RequestContextListener();
    }
  @Bean
  public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
    return args -> {

      logger.info("Let's inspect the beans provided by Spring Boot:");

      String[] beanNames = ctx.getBeanDefinitionNames();
      Arrays.sort(beanNames);
      for (String beanName : beanNames) {
        logger.info(beanName);
      }
    };
  }
}

我不应该在WASLiberty console.log的主要方法中看到打印语句吗?

2 个答案:

答案 0 :(得分:1)

  

我不应该在WASLiberty console.log中的main方法中看到print语句吗?

您不会在main方法中看到任何打印输出,因为它未在Liberty中执行。 main方法用于从命令行启动的独立应用程序,而不是从应用程序服务器运行。将您的邮件置于configure方法中,如下所示,您将看到它。

protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        System.out.println("##############@@@@@@@@@@@@##############Starting app"); 

答案 1 :(得分:-2)

System.out.println()将写入文件,例如console.log。

相反,它会写入控制台,如命令行窗口或eclipse控制台。

您需要使用 loggers (例如log4j或Java.util.logging)来写入文件。

您可以在此处找到更多信息what-is-the-difference-between-java-logger-and-system-out-println