您的位置:首页 > 运维架构 > Tomcat

巧为tomcat插件配置log4j日志,解决未报错启动不成功

2017-05-07 12:32 656 查看

前情摘要

源于Maven项目中整合SSM框架后,运行一个根据商品id查询商品信息的Demo来测试是否整合成功。

在pom文件中配置好Tomcat插件,启动tomcat,如果成功,输出信息如下:

May 07, 2017 11:30:01 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
May 07, 2017 11:30:01 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Tomcat
May 07, 2017 11:30:01 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
May 07, 2017 11:30:04 AM org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
May 07, 2017 11:30:04 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
-------------------这是分割线-----------------------------------------
May 07, 2017 11:30:06 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'e3-manager'
May 07, 2017 11:30:07 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]


而我碰到的问题是,分割线以下的信息没有输出,也就是启动失败。

但是没有报错信息,tomcat的日志文件夹内也没有文件存在,这就有点像谜之bug。

解决办法

受到一篇博客的启发,在tomcat中配置log4j,查看更详细的日志。

博文地址:http://ycgit.blog.51cto.com/8590215/1852863

但是我使用的是tomcat的Maven插件,找到的资料较少,最终在万能的stackoverflow找到配置方法。

StackOverFlow地址:http://stackoverflow.com/questions/31658993/tomcat7-maven-plugin-log4j-no-appender-could-be-found-for-logger-org-apache-ca

<!--配置tomcat插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<port>8080</port>
<!--log4j配置文件位置-->
<systemProperties>
<log4j.configuration>file:src/main/resources/log4j.properties</log4j.configuration>
</systemProperties>
</configuration>
</plugin>


但是最后一个问题,我不懂配置文件怎么写的,就找了这篇博文,复制了其文中贴出的配置内容。

博文地址:http://blog.csdn.net/cfydaniel/article/details/41348449

log4j.properties内容

log4j.rootLogger = INFO, CATALINA

# Define all the appenders
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina
log4j.appender.CATALINA.Append = true
log4j.appender.CATALINA.Encoding = UTF-8
# Roll-over the log once per day
log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost
log4j.appender.LOCALHOST.Append = true
log4j.appender.LOCALHOST.Encoding = UTF-8
log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File = ${catalina.base}/logs/manager
log4j.appender.MANAGER.Append = true
log4j.appender.MANAGER.Encoding = UTF-8
log4j.appender.MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager
log4j.appender.HOST-MANAGER.Append = true
log4j.appender.HOST-MANAGER.Encoding = UTF-8
log4j.appender.HOST-MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding = UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =\
INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =\
INFO, HOST-MANAGER


后记

最终在日志文件内找到了错误原因,mybatis逆向工程生成的xml文件命名空间错了。

这件事告诉我们,文件生成之后要去看一眼,确认一下。

同时也发现,tomcat的官方文档,为tomcat配置log4j的内容:

http://tomcat.apache.org/tomcat-7.0-doc/logging.html#Using_Log4j

不过Maven插件的配置我第一次看的话,也不会想到是在那里配置,其中systemProperties标签就是指定配置文件,好奇为啥他们能知道那里就算配置log4j文件的。

http://tomcat.apache.org/maven-plugin-2.2/run-mojo-features.html

官方示例节选

<configuration>
<!-- http port -->
<port>9090</port>
<!-- application path always starts with /-->
<path>/</path>
<!-- optional path to a context file -->
<contextFile>${tomcatContextXml}</contextFile>
<!-- optional system propoerties you want to add -->
<systemProperties>
<appserver.base>${project.build.directory}/appserver-base</appserver.base>
<appserver.home>${project.build.directory}/appserver-home</appserver.home>
<derby.system.home>${project.build.directory}/appserver-base/logs</derby.system.home>
<java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
</systemProperties>
<!-- if you want to use test dependencies rather than only runtime -->
<useTestClasspath>false</useTestClasspath>
<!-- optional if you want to add some extra directories into the classloader -->
<additionalClasspathDirs>
<additionalClasspathDir></additionalClasspathDir>
</additionalClasspathDirs>
</configuration>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat maven log4j
相关文章推荐