今天系统有个小的bug:程序中log4j生成的log日志在开发环境和部署完之后的运行环境两个地方的不一样很是奇怪。以下log4j.properties文件:
# Define the root logger with appender file log4j.rootLogger = DEBUG, FILE, INFO # Define the file appender log4j.appender.FILE=org.apache.log4j.RollingFileAppender # Set the name of the file log4j.appender.FILE.File=logs/morpheuslog.out # Set the immediate flush to true (default) log4j.appender.FILE.ImmediateFlush=true # Set the threshold to debug mode log4j.appender.FILE.Threshold=debug # Set the append to false, should not overwrite log4j.appender.FILE.Append=true # Set the maximum file size before rollover log4j.appender.FILE.MaxFileSize=50MB # Set the the backup index log4j.appender.FILE.MaxBackupIndex=100 # Define the layout for file appender log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%d [%t] %-5p %c - %m%n log4j.appender.INFO=org.apache.log4j.ConsoleAppender log4j.appender.INFO.layout=org.apache.log4j.PatternLayout log4j.appender.INFO.layout.conversionPattern=%d [%t] %-5p %c - %m%n log4j.logger.com.avocent.morphues = ERROR log4j.logger.org.springframework = ERROR log4j.logger.com.avocent.cdmr = ERROR log4j.logger.org.jumpmind = INFO log4j.logger.net.sf.ehcache.store = ERROR #End of LOG4J
一般默认情况下如果
log4j.appender.FILE.File=logs/morpheuslog.out
这样写的话,系统会自动把日志放到程序执行的根目录下。
例如:我们在jetty-distribution-8.1.2下用start.bat启动服务器,那么相应的日志会自动写到
jetty-distribution-8.1.2下的logs文件夹下面。
但是当我们把程序打包成exe安装文件之后,也同样是用jetty-distribution-8.1.2的start.bat启动,但是就是写不到logs/morpheuslog.out里面去。反而在我们一台远程服务器上它把日志写到了jetty-distribution-8.1.2/bin/logs/morpheuslog.out很是郁闷。
google 了一圈,一般都是用
log4j.appender.errorfile.File=${catalina.home}/logs/LogFilename.log
解决的,于是我也照着这个做了
log4j.appender.FILE.File=${JETTY_HOME}/logs/morpheuslog.out
因为我们的jetty服务器的主目录设置就是这样的SET JETTY_HOME=%CD%
但是我 这么做了之后发现没有用,还是什么效果也没有。
另外有人反映说用listener监听器,在程序刚启动的时候,就给Property设值
publicvoid contextInitialized(ServletContextEvent event){ServletContext context = event.getServletContext();System.setProperty("rootPath", context.getRealPath("/"));}
Then in the log4j.properties file:
log4j.appender.file.File=${rootPath}WEB-INF/logs/MyLog.log
众人反映这个方法可行,但是其实跟catalina.home是一样的。
正当我要这么尝试的时候,我突然发现startup.bat文件中有这么一句:
-Djetty.home=%JETTY_HOME% -jar start.jar
所以想刚才我的方法是没有问题的,可能是写法有点问题,于是我重写了一下。
log4j.appender.FILE.File=${jetty.home}/logs/morpheuslog.out
然后重新把它部署服务器上,重启了一下服务之后,我发现真的可以了。
所以一般情况下为了能使日志输出到相对指定的目录下的话,可以更具体的指出到某一个主目录下就比较好了。
一般来说,jetty的话是放在jetty/logs的比较常见。
相关推荐
将改文件复制到jetty的路径下,可以启动jetty路径去测试
jetty 服务器,解压放到任意文件夹,配置路劲即可,。
jetty 服务器使用
jetty服务器性能调整过程分析jetty服务器性能调整过程分析jetty服务器性能调整过程分析jetty服务器性能调整过程分析
Android-I-Jetty服务器部署例子代码,第一运行起来I-Jetty服务器以后,一定想要例子测试一下;
jetty服务器 直接解压就好了
jetty服务器jetty-distribution-7.3.0.v20110203
java jetty嵌入式服务器实例大全,包括文件资源、servlet、xml配置服务器、war包、多端口监听等实例。
jetty服务器内嵌实例,运行JettTest后即可访问
jetty启动配置文件
Eclipse与Jetty服务器集成的最简单方法
Android-I-Jetty服务器源码,项目相关内容已经整理完成,拿来就可以运行了,希望对您有一定帮助
该资料包含:jetty8.0版本 该资料由明瑞教育黄老师出品
Logback是由log4j创始人设计的另一个开源日志组件,基于slf4j的日志规范实现的框架,性能比log4j要好。 Logback主要分为三个技术模块: logback-core:该模块为其他两个模块奠定了基础。 logback-classic:是log4j...
移动端的服务器 Jetty android 服务器 i-Jetty
jetty嵌入式服务器开发所必须的jar包,本人使用jetty版本为6.1.3,jar包总数为9个,来自jetty:commons-el-1.0.jar,jasper-compiler-5.5.15,jasper-compiler-jdt-5.5.15.jar,jasper-runtime-5.5.15.jar,jetty-...
Jetty 可以作为嵌入式服务器使用,Jetty的运行速度较快,而且是轻量级的,可以在Java中可以从test case中控制其运行。从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。 作为嵌入式服务器使用代码实例:...
jetty7.6.10服务器
嵌入式jetty服务器开发的所有用到的jar包 包括基础jetty使用的和编译使用的ant的jar全都全了 一次性导入再也不用为找jetty依赖jar包而麻烦了