一直没能很好的解决log4j的日志文件的保存路径.今天恰好又遇到.算是比较完美的解决.
先说场景:
一个web项目,使用log4j做日志系统.开发时web容器为jetty,生产环境为tomcat5.5.
classes下定义了log4j.properties.
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.File=${dir}/logs/report.log
一般,自定义dir,可以在System中设置dir的值.
如果不是使用java -Ddir=xxx这样方式,就需要在加载log4j.properties之前设置.
一般用Listener,在Listener的init方法中设置.
这种方式在jetty中可行.在tomcat中失败.
这是因为tomcat在启动项目时,会优先加载log4j.properties文件,然后才执行Listener.
突然想到,tomcat在启动项目时,会自动设置环境变量:catalina.base
修改一下
log4j.appender.A2.File=${catalina.base}/logs/report.log
然后在Listener中判断此变量是否存在,存在,表示在tomcat中,不需要再设置,否则,设置路径为项目根路径
String key = "catalina.base";
if (System.getProperty(key) == null) {//不在tomcat中,需定义
String root = ctx.getRealPath("/");//就保存在项目下
System.setProperty(key, root);
}
这样.如果再tomcat中,会保存日志文件到tomcat/logs下.否则保存到webapp/logs下
附上一个典型的log4j配置
log4j.rootLogger=INFO, A1, A2
# A1 is set to be ConsoleAppender sending its output to System.out
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%t] (%F:%L) %3x - %m%n
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.Threshold=INFO
#log_dir\u5728AppListener\u4e2d\u83b7\u5f97\u5e76\u8bbe\u7f6e\u5982System
log4j.appender.A2.File=${catalina.base}/logs/web.log
log4j.appender.A2.Append=true
log4j.appender.A2.MaxFileSize=100KB
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5r %-5p [%t] %c{2}:%L - %m%n
分享到:
相关推荐
### Log4j中配置日志文件相对路径方法详解 #### 概述 在软件开发过程中,日志记录是一项重要的功能,它有助于开发者调试程序、监控应用程序的运行状态以及追踪问题。`Log4j`作为一款优秀的日志管理工具,被广泛应用...
这个“log4j简单范例 日志文件是相对路径的”示例将展示如何配置Log4j来记录日志,并将日志文件保存在程序运行时的相对路径下。 首先,Log4j的核心组件包括Logger(日志器)、Appender(输出目的地)和Layout(格式...
log4j中配置日志文件相对路径方法分析 方法一、 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log 其中“${...
本文主要讨论了在Log4j配置中如何处理相对路径的问题,以适应不同环境下的日志文件存储需求。 一、使用系统属性设置路径 在Log4j的配置文件(通常是`log4j.properties`)中,可以使用`${}`语法引用系统属性。例如...
在SSH(Struts、Spring、Hibernate)等Java Web框架中,配置Log4j以使用相对路径是非常常见的需求,这有助于在不同环境下保持日志文件的一致性。以下是关于Log4j相对路径配置的详细说明: 首先,在`Web.xml`文件中...
例如,在配置文件中指定的日志文件路径`log4j.appender.logfile.File=set up in web.xml`,这里的“set up in web.xml”实际上是指在`web.xml`中指定的日志文件路径,而这个路径也是相对于项目的根目录。 #### 总结...
log4j.appender.FILE.File=${catalina.home}/logs/myApp.log # 这里使用相对路径 log4j.appender.FILE.ImmediateFlush=true log4j.appender.FILE.Threshold=DEBUG log4j.appender.FILE.Append=true log4j.appender....
本篇将详细介绍如何配置log4j日志文件,特别是在JSP项目中的应用。 首先,我们要理解日志的级别。Log4j支持多个日志级别,包括DEBUG、INFO、WARN、ERROR和FATAL。这些级别按照严重程度递增,DEBUG是最详细的信息,...
在Java应用中使用Log4j进行日志记录的第一步,是创建并配置log4j的属性文件(log4j.properties)。这个文件定义了日志的级别、输出目的地以及日志的格式。以下是一个典型的log4j配置示例: ```properties # 设置根...
log4j1/log4j2中category的配置以及log的输出位置(windows和linux通用的log输出位置) 一、场景和需求 假设我现在有3个独立的用project(暂时用maven关联起来,当然也可以不用maven),一个是提供公共服务的...
Log4j通过配置文件(通常是log4j.properties或log4j.xml)来设置日志的行为,其中,日志文件的路径配置是关键部分。 二、绝对路径与相对路径 1. 绝对路径:在操作系统中,绝对路径是从根目录开始,完整指定文件或...
这个jar文件是Log4j 1.2.8版本的核心库,包含了所有必要的类和方法,用于在Java应用程序中实现日志记录。用户需要将此jar包加入到项目的类路径中,才能使用Log4j的功能。1.2.8是一个较早的版本,虽然可能不包含最新...
### Log4j基本配置详解 #### 一、Log4j简介 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件还是其他地方,还可以控制每一条日志的输出格式;通过定义每一条日志信息...
Log4Qt,顾名思义,是Apache Log4J日志框架的一个Qt实现,为Qt应用程序提供了强大的日志处理功能。由于Log4Qt的文档相对较少,理解其工作原理和用法往往需要参考Log4J的资料。本文将深入探讨Log4Qt的核心概念、配置...
- 将log4j.properties文件放置在项目的`bin/`目录下,并通过相对路径或者系统资源的方式加载配置文件。 - 如果文件放置在`bin/`目录下的更深层次子目录中,则需要确保路径正确无误。 #### 三、log4j格式详解 - *...
`log4j.appender.FILE`配置文件appender,如`log4j.appender.FILE.File=file.log`指定日志文件路径。`log4j.appender.FILE.Append=false`决定是否追加模式,如果为`true`,则日志将被添加到现有文件,如果为`false`...
`log4j.properties`文件中定义了日志输出的具体路径和格式。例如: ``` log4j.appender.R.File=../log/log.txt ``` 这条配置表示日志将被输出到当前目录的上级目录下的`log`文件夹中的`log.txt`文件。需要...
开发者只需将这个JAR文件添加到项目的类路径中,就可以开始使用log4j进行日志记录。 **详解内容** "详解"部分可能包括以下内容: 1. **配置文件**:log4j的配置通常通过一个XML或.properties文件完成,例如`log4j...
除了`log4j`,JDK本身也提供了日志记录包`java.util.logging`,尽管功能相对简单,但对于日志输出需求不复杂的场景来说,可能是一个更轻量级的选择。 - **初始化与配置**:使用`LogManager`类实例化记录器,并通过...
通过配置log4j.properties或log4j.xml文件,开发者可以轻松地调整日志行为以适应项目需求。 其次,`commons-discovery-0.2.jar`是Apache Commons Discovery库,它提供了一种标准的方式来发现服务和组件。在Log4j中...