在基于Spring的web应用程序中,我的控制台/日志输出将去哪里?
我正在编写一个简单的基于Spring的web应用程序,并将其部署到WebSphereLiberty 8.5.5.9;我已经克服了部署问题,应用程序似乎启动了(根据Liberty在基于Spring的web应用程序中,我的控制台/日志输出将去哪里?,spring,websphere-liberty,open-liberty,Spring,Websphere Liberty,Open Liberty,我正在编写一个简单的基于Spring的web应用程序,并将其部署到WebSphereLiberty 8.5.5.9;我已经克服了部署问题,应用程序似乎启动了(根据Libertyconsole.log)。但是,我没有看到任何控制台或日志输出。我的应用程序主类在main方法中包含print语句,它是: @Configuration public class UserSettingApplication extends SpringBootServletInitializer implements
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);
}
};
}
}
我是否应该在WASLibertyconsole.log中的main方法中看到print语句?System.out.println()将不写入文件,如console.log
相反,它将写入控制台,如命令行窗口或eclipse控制台
您需要使用记录器如log4j或Java.util.logging来写入文件
你可以在这里找到更多信息
我不应该在waslibety console.log的main方法中看到print语句吗
您将不会看到来自main
方法的任何打印输出,因为它不会在Liberty中执行。main
方法用于从命令行启动而不是从应用服务器运行的独立应用。将消息放入下面的configure
方法中,您将看到它
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
System.out.println("##############@@@@@@@@@@@@##############Starting app");
我想我以前在…//logs/console.log中见过println输出。此外,我正在向stdout和日志文件写入数据,因此我仍然不明白为什么看不到我的输出。这个答案不正确,如果您使用run
命令而不是start
启动服务器,则所有System.out.println都会转到Liberty中的message.log
和控制台.log
。因此,请检查您的message.log
文件中是否有这些条目。因为这是不准确和误导性的。请注意,您可以删除您的答案并获得代表分数。@NathanHughes,感谢您的教学,我在这里学习,这个答案是错误之一。有时,要点不如提醒重要:-)