我正在编写一个简单的基于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
的主要方法中看到打印语句吗?
答案 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