Jboss迁移到Tomcat之手记(二)- Log4J

简介:
TomcatJboss有个很重要的区别,Jboss是会把$JBOSS_HOME/server/all/deploy/project.war包含在CLASSPATH里,而Tomcat不会,只有$PROJECT.WAR/WEB-INF/classes里。所以java代码ClassA.class.getResourceAsStream(“WEB-INF/a.properties”)无法读取到文件,因为classpath没包含此项目主目录。对应log4j,就是不要在project.warlog4j.properties/log4j.xml来配置log4J,而应该在project.war/WEB-INF/classes下。Java代码读取这里的代码可以加.JVM启动shellclasspath,或者用Listener来设置变量表示应用主目录:如下是spring的一个Listener可以配置系统变量projeta.root, java代码可以在web应用中(必须在web应用中,如果非web应用,可以容易的加classpath来解决)用System.getProperty(“projecta.root”)来读取应用的物理主目录:
<context-param>
                   <param-name>webAppRootKey</param-name>
                   <param-value>projecta.root</param-value>
         </context-param>
         <listener>
                   <listener-class>
                            org.springframework.web.util.WebAppRootListener
                   </listener-class>
         </listener>
 
Tomcat内建的是jdklogging来跟踪日志,配置在$TOMCAT_HOME/conf/logging.properties.
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers=1catalina.org.apache.juli.FileHandler
 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/projecta].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers=1catalina.org.apache.juli.FileHandler
 
如果要Tomcat(不是仅仅某个app)改用Log4j,根据Tomcat官方网站介绍,需要用Juli-Adapters来实现(http://tomcat.apache.org/tomcat-7.0-doc/logging.html)。
Tomcat编译得到(Ant 1.8.2:(http://ant.apache.org/bindownload.cgi)Tomcat 7 Source:(http://tomcat.apache.org/download-70.cgi) ant extras)的extras目录下的tomcat-juli.jar覆盖$TOMCAT_HOME/bin里,tomcat-juli-adapters.jar复制到$TOMCAT_HOME/lib里, log4j.jarcommon-logging.jar$TOMCAT_HOME/lib,在$TOMCAT_HOME/lib放置log4j.properties/log4j.xml即可实现log4j来记录程序日志了。
tomcat-juli.jar,tomcat-juli-adapters.jar(extras)
tomcat-juli.jar to override tomcat.home/bin.
tomcat-juli-adapters.jar to tomcat.home/lib.
log4j to tomcat.home/lib
log4j.properties/log4j.xml to tomcat.home/lib
mv conf/logging.properties conf/logging.properties.bak
如果只是某个web application需要用log4jtomcat本身还延用JDK logging的话,只需要log4j/common-logging/log4j配置在CLASSPATH里能找到即可实现。如果log4j配置不止一个,会层叠效果,如果重复项,会后者覆盖前者(classpath顺序而定)。
本文转自 dannyy1026 51CTO博客,原文链接:
http://blog.51cto.com/dannyyuan/756003


相关文章
|
6月前
|
应用服务中间件
Tomcat日志中文乱码
Tomcat日志中文乱码
|
7月前
|
应用服务中间件
Tomcat日志中文乱码
通过以上步骤,你可以在Tomcat日志中解决中文乱码问题,确保日志以UTF-8编码输出。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
68 4
|
7月前
|
Java 应用服务中间件
解决IDEA tomcat控制台只有server日志
请注意,确保在调试或开发阶段使用更详细的日志级别(如 `DEBUG`或 `TRACE`),但在生产环境中应将其设置为更高的级别以减少日志量。
209 0
|
7月前
|
Oracle Java 关系型数据库
淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.鏈嶅姟鍣ㄧ増鏈�: Apache Tomcat/8.5.
淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.鏈嶅姟鍣ㄧ増鏈�: Apache Tomcat/8.5.
116 1
|
Java 应用服务中间件
idea tomcat 日志 中文 乱码【已解决】
idea tomcat 日志 中文 乱码【已解决】
285 0
|
应用服务中间件
Tomcat启动时日志报 dcom.sun.manager.jmxremote 异常导致无法正常启动使用
Tomcat启动时日志报 dcom.sun.manager.jmxremote 异常导致无法正常启动使用
205 0
|
应用服务中间件 Linux
Linux不重启Tomcat清空catalina.out日志的几种方法
Linux不重启Tomcat清空catalina.out日志的几种方法
516 0
|
Unix 应用服务中间件 Linux
Tomcat清理日志文件无法立即释放磁盘空间
Tomcat清理日志文件无法立即释放磁盘空间
145 0
|
Java 应用服务中间件 Apache
Tomcat配置访问日志和线程数
Tomcat配置访问日志和线程数
363 0
Tomcat配置访问日志和线程数
|
移动开发 应用服务中间件 Linux
linux启动tomcat并查看启动日志
linux启动tomcat并查看启动日志
1096 0