`
xfxlch
  • 浏览: 167614 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

log4j在jetty服务器下生成的log日志文件的相对路径问题

    博客分类:
  • Java
阅读更多

   今天系统有个小的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权威指南.pdf

    在某些情况下,可能需要优雅地关闭Jetty服务器。可以通过调用`Server.stop()`方法来实现。 **10.5 JMX管理** Jetty支持JMX(Java Management Extensions),可以通过JMX来远程管理和监控Jetty服务器。 #### 十一...

    简单的web服务器 使用java搭建

    可以使用简单的文件日志或集成如Log4j这样的日志框架。 通过以上步骤,我们可以构建出一个能够处理HTTP请求、提供静态资源服务的Java Web服务器。然而,对于实际应用,可能还需要扩展功能,如支持动态内容、数据库...

    java http服务器

    Java的java.util.logging库或者第三方库如Log4j可以用来进行日志记录。 9. **类路径管理**:`.classpath`文件是Eclipse IDE中的配置文件,用于定义项目中的类路径,确保正确加载和编译源代码。 10. **项目配置**:...

    2.文件结构与配置1

    在这里,我们可以找到`act`(Activiti相关文件)、`cache`(Ehcache缓存配置)、`mappings`(Mybatis SQL映射文件)、`jeesite.properties`(系统配置属性文件)、`spring-*.xml`(Spring配置文件)以及`log4j....

    java web word文件 pdf文件在线预览源码

    为了便于调试和问题排查,项目中会有错误处理机制,可能使用try-catch-finally结构来捕获异常,并通过日志框架如Log4j记录日志。 9. **RESTful API** 为实现前后端分离,项目可能会采用RESTful API设计,通过HTTP...

    其他类别JSP Explorer 文件浏览器 v1.0-fileexplorer.zip

    JSP应用可能会有异常处理机制和日志框架,如Log4j,来记录运行时的错误和调试信息。 9. **部署和运行**:JSP Explorer需要在支持Java EE的Web服务器或应用服务器上部署,如Tomcat、Jetty等。用户通过HTTP或HTTPS...

    Apache CXF文件目录结构及需要jar包

    - `commons-logging.jar` 和 `log4j.jar`:日志记录库,CXF使用它们进行日志输出。 3. **如何配置CXF**: - 在Java项目中,将CXF的jar包添加到类路径中。 - 创建服务接口和服务实现,并使用CXF的工具(如WSDL2...

    cas-server非maven项目源码

    由于项目没有使用Maven,开发者需要确保所有必要的核心库都被正确引入,如Spring框架、Jackson库、log4j日志框架等。 `cas-server-support-jdbc`模块是CAS服务器对数据库支持的一个扩展,特别针对MySQL用户验证。这...

    xfile 搭建webservice用到的jar包

    6. **依赖的第三方库**:XFile可能依赖于其他的开源库,比如`log4j.jar`用于日志记录,`slf4j-api.jar`和`slf4j-log4j12.jar`用于日志框架的简单日志接口和实现。 7. **文档和示例**:压缩包中可能还包含使用说明、...

    javaWeb新闻管理系统的jar包集合.rar

    JavaWeb应用中常见的日志框架有Log4j、SLF4J和Logback。对应的jar包如`log4j.jar`、`slf4j-api.jar`和`logback-classic.jar`可以记录程序运行过程中的信息。 5. 文件上传:新闻管理系统可能涉及用户上传图片或附件...

    axis2_web_1.7.4整合

    这可能涉及到在服务器的webapps目录下部署Axis2的WAR文件,或者将Axis2的库文件添加到服务器的类路径中。 3. **创建服务**:使用Axis2提供的工具,如WSDL2Java,可以生成Java服务接口和实现类。WSDL(Web Services ...

    几个hml需要的jar包

    7. **其他辅助库**:例如,Log4j或SLF4J用于日志记录,Guava提供实用工具函数,JUnit用于单元测试等。 不过,描述中的"几个hml需要的jar包"重复多次,并没有给出具体需要哪些JAR文件。这可能意味着你需要根据项目...

    java_on_linux

    Java应用通常会使用Log4j、SLF4J等日志框架,配合syslog、logrotate等Linux工具进行日志收集和归档。同时,利用像JMX、Prometheus、Grafana这样的监控工具,可以实时监控Java应用的性能指标,及时发现并解决问题。 ...

    手把手教你用axis1.4搭建webservice

    5. **部署服务**:将生成的Java类打包成WAR文件,然后部署到支持Servlet 2.2或更高版本的Web服务器,如Tomcat或Jetty。 6. **测试服务**:使用Axis的` AXISAdminClient`工具或通过SOAP请求测试服务的可用性。 7. *...

    基于springboot+mybatis的选课管理系统.zip

    日志记录通常使用Logback或Log4j2,Spring Boot提供了默认的日志配置。 至于项目工程的结构,一般会遵循Maven或Gradle的标准目录布局,包括src/main/java(存放Java源代码)、src/main/resources(存放配置文件和...

    solr4.9与tomcat8,tomcat7整合

    - 将`solr-4.9.0/example/resources/log4j.properties`复制到`tomcat/webapps/solr/WEB-INF/classes`,确保日志模块正常工作。 - 修改`solr/home/solr.xml`文件,删除原有内容并添加如下配置: ```xml ...

    openfire用到的jar包

    4. **log4j.jar**:Apache的Log4j日志框架,用于记录Openfire运行时的日志信息。 5. **mysql-connector*.jar**:MySQL数据库连接驱动,如果Openfire使用MySQL作为数据库,这个JAR包是必需的。 6. **persistence-...

    运用springboot框架搭建的bbs论坛系统.zip

    9. **错误处理和日志记录**:SpringBoot提供了统一的错误处理页面和日志框架集成,如Logback或Log4j,方便调试和追踪应用异常。 10. **Docker化部署**:SpringBoot的应用可以被打包成可执行的jar,与Docker结合,...

    webservice框架axis的jar包

    7. `log4j.jar`(可选):一种常用的日志实现,与Commons Logging配合使用。 8. `jdom.jar`或`xercesImpl.jar`,`xml-apis.jar`:XML解析相关库,用于处理XML文档。 这些jar包构成了Axis框架的基础运行环境,开发者...

    ssm基于注解的项目搭建

    8. **日志管理**:项目开发中,日志记录是非常重要的,通常会集成Log4j或Logback进行日志输出,以便于调试和问题定位。 9. **版本控制**:为了团队协作,项目通常会使用Git进行版本控制,管理代码的变更历史,协同...

Global site tag (gtag.js) - Google Analytics