今天系统有个小的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服务器。可以通过调用`Server.stop()`方法来实现。 **10.5 JMX管理** Jetty支持JMX(Java Management Extensions),可以通过JMX来远程管理和监控Jetty服务器。 #### 十一...
可以使用简单的文件日志或集成如Log4j这样的日志框架。 通过以上步骤,我们可以构建出一个能够处理HTTP请求、提供静态资源服务的Java Web服务器。然而,对于实际应用,可能还需要扩展功能,如支持动态内容、数据库...
Java的java.util.logging库或者第三方库如Log4j可以用来进行日志记录。 9. **类路径管理**:`.classpath`文件是Eclipse IDE中的配置文件,用于定义项目中的类路径,确保正确加载和编译源代码。 10. **项目配置**:...
在这里,我们可以找到`act`(Activiti相关文件)、`cache`(Ehcache缓存配置)、`mappings`(Mybatis SQL映射文件)、`jeesite.properties`(系统配置属性文件)、`spring-*.xml`(Spring配置文件)以及`log4j....
为了便于调试和问题排查,项目中会有错误处理机制,可能使用try-catch-finally结构来捕获异常,并通过日志框架如Log4j记录日志。 9. **RESTful API** 为实现前后端分离,项目可能会采用RESTful API设计,通过HTTP...
JSP应用可能会有异常处理机制和日志框架,如Log4j,来记录运行时的错误和调试信息。 9. **部署和运行**:JSP Explorer需要在支持Java EE的Web服务器或应用服务器上部署,如Tomcat、Jetty等。用户通过HTTP或HTTPS...
- `commons-logging.jar` 和 `log4j.jar`:日志记录库,CXF使用它们进行日志输出。 3. **如何配置CXF**: - 在Java项目中,将CXF的jar包添加到类路径中。 - 创建服务接口和服务实现,并使用CXF的工具(如WSDL2...
由于项目没有使用Maven,开发者需要确保所有必要的核心库都被正确引入,如Spring框架、Jackson库、log4j日志框架等。 `cas-server-support-jdbc`模块是CAS服务器对数据库支持的一个扩展,特别针对MySQL用户验证。这...
6. **依赖的第三方库**:XFile可能依赖于其他的开源库,比如`log4j.jar`用于日志记录,`slf4j-api.jar`和`slf4j-log4j12.jar`用于日志框架的简单日志接口和实现。 7. **文档和示例**:压缩包中可能还包含使用说明、...
JavaWeb应用中常见的日志框架有Log4j、SLF4J和Logback。对应的jar包如`log4j.jar`、`slf4j-api.jar`和`logback-classic.jar`可以记录程序运行过程中的信息。 5. 文件上传:新闻管理系统可能涉及用户上传图片或附件...
这可能涉及到在服务器的webapps目录下部署Axis2的WAR文件,或者将Axis2的库文件添加到服务器的类路径中。 3. **创建服务**:使用Axis2提供的工具,如WSDL2Java,可以生成Java服务接口和实现类。WSDL(Web Services ...
7. **其他辅助库**:例如,Log4j或SLF4J用于日志记录,Guava提供实用工具函数,JUnit用于单元测试等。 不过,描述中的"几个hml需要的jar包"重复多次,并没有给出具体需要哪些JAR文件。这可能意味着你需要根据项目...
Java应用通常会使用Log4j、SLF4J等日志框架,配合syslog、logrotate等Linux工具进行日志收集和归档。同时,利用像JMX、Prometheus、Grafana这样的监控工具,可以实时监控Java应用的性能指标,及时发现并解决问题。 ...
5. **部署服务**:将生成的Java类打包成WAR文件,然后部署到支持Servlet 2.2或更高版本的Web服务器,如Tomcat或Jetty。 6. **测试服务**:使用Axis的` AXISAdminClient`工具或通过SOAP请求测试服务的可用性。 7. *...
日志记录通常使用Logback或Log4j2,Spring Boot提供了默认的日志配置。 至于项目工程的结构,一般会遵循Maven或Gradle的标准目录布局,包括src/main/java(存放Java源代码)、src/main/resources(存放配置文件和...
- 将`solr-4.9.0/example/resources/log4j.properties`复制到`tomcat/webapps/solr/WEB-INF/classes`,确保日志模块正常工作。 - 修改`solr/home/solr.xml`文件,删除原有内容并添加如下配置: ```xml ...
4. **log4j.jar**:Apache的Log4j日志框架,用于记录Openfire运行时的日志信息。 5. **mysql-connector*.jar**:MySQL数据库连接驱动,如果Openfire使用MySQL作为数据库,这个JAR包是必需的。 6. **persistence-...
9. **错误处理和日志记录**:SpringBoot提供了统一的错误处理页面和日志框架集成,如Logback或Log4j,方便调试和追踪应用异常。 10. **Docker化部署**:SpringBoot的应用可以被打包成可执行的jar,与Docker结合,...
7. `log4j.jar`(可选):一种常用的日志实现,与Commons Logging配合使用。 8. `jdom.jar`或`xercesImpl.jar`,`xml-apis.jar`:XML解析相关库,用于处理XML文档。 这些jar包构成了Axis框架的基础运行环境,开发者...
8. **日志管理**:项目开发中,日志记录是非常重要的,通常会集成Log4j或Logback进行日志输出,以便于调试和问题定位。 9. **版本控制**:为了团队协作,项目通常会使用Git进行版本控制,管理代码的变更历史,协同...