为了让Web项目中的Spring 使用Log4j做如下配置:
1、在web.xml中添加如下内容:
<!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root"。但最好设置,以免项目之间的名称冲突。
定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里。
然后log4j的配置文件里就可以用${webName.root }来表示Web目录的绝对路径,把log文件存放于webapp中。
此参数用于后面的“Log4jConfigListener”-->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webName.root</param-value>
</context-param>
<!--由Sprng载入的Log4j配置文件位置-->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<!--Spring默认刷新Log4j配置文件的间隔,单位为millisecond-->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<!-- Web 项目 Spring 加载 Log4j 的监听 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
2、编写log4j.properties属性文件,使用web.xml配置的全局变量:
log4j.appender.A_default.File=${webName.root}/WEB-INF/logs/log4j.log
详细内容略。
问题:
如上配置后,log4j.properties属性文件的存放位置,应在Web项目中的WEB-INF下,而不是默认的/WEB-INF/classes下。
可在做spring 的单元测试时,默认读取classes下的log4j.properties,不知该问题如何解决?
如果把log4j.properties存放在/WEB-INF/classes/log4j.properties下的话,会在启动Tomcat时报错:
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: \WEB-INF\logs\log4j.log (系统找不到指定的路径。)
可在\WEB-INF\logs\log4j.log 却可以看到log4j.log文件已存在Spring的日志输出信息。
分析可能是其他的类在加载log4j.properties时,无法读取${webName.root}变量的值。
--------------------------------------------------------------------------------------------------------------------------------------------
log4j是很好用的一个工具,在目前的WEB项目中经常使用。配上jakarta的common logging和Eclipse的插件Log4E很好用。
不过还是有几个不太方便的地方:
1 Log4j的配置文件修改了之后必须重启才能生效
2 配置文件只能放在WEB-INF/classes
Spring对于Log4j有了更好的增强,配置文件修改后不需要重启,不用再放到WEB-INF/classes目录下。
下面是要在web.xml中增加的配置参数。
<!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root"-->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>WebConsole2.root</param-value>
</context-param>
<!--由Sprng载入的Log4j配置文件位置-->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
<!--Spring默认刷新Log4j配置文件的间隔,单位为毫秒-->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<!--Spring log4j Config loader-->
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
第一个参数webAppRootKey如果只有一个应用用了Spring对Log4J的增强,则可以不用设置;否则一定要进行设置。
这个以前也不知道,也是今天在同时发布两个应用的时候出了问题后Google发现的。
相对应的log4j的配置文件(用的xml格式):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%p --- %C{1}.%M(%L) | %m%n"/>
</layout>
</appender>
<appender name="LOG_FILE" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="ALL"/>
<param name="File"
value="${WebConsole2.root}/WEB-INF/logs/WebConsole2.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="1"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<logger name="org.apache.struts">
<level value="warn"/>
</logger>
<logger name="org.springframework">
<level value="warn"/>
</logger>
<logger name="com.rb.webconsole">
<level value="all"/>
</logger>
<root>
<level value="off"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="LOG_FILE"/>
</root>
</log4j:configuration>
注意现在log文件的位置在/WEB-INF/logs目录下了。
分享到:
相关推荐
2. `<param-name>log4jConfigLocation</param-name>` 指定了Log4j配置文件的路径,这里是`WEB-INF/config/log4j.properties`。这个配置告诉Web应用在哪里寻找Log4j的配置信息。 3. `<param-name>log4...
1. **log4jConfigLocation**:指定了log4j配置文件的位置,这里设为`/WEB-INF/log4j.properties`。 2. **log4jRefreshInterval**:设定刷新配置文件的时间间隔,单位为毫秒,默认值为60000毫秒即一分钟。 3. **...
- **说明**:通过注册`Log4jConfigListener`监听器,可以在应用启动时自动加载Log4J配置,并在配置文件发生变化时自动刷新配置。 #### 三、Log4J配置文件详解 Log4J配置文件通常是`.xml`格式,其中包含了日志输出...
5. **log4j配置文件**:在`log4j.properties`文件中,我们可以定义日志级别(如INFO、DEBUG等)、日志输出的目标(如控制台、文件等)以及输出格式。例如,`log4j.rootCategory=INFO, file`设置了日志级别为INFO,并...
`log4jRefreshInterval` 参数定义了Log4j配置文件的刷新间隔(以毫秒计),这样可以实现动态更新日志配置,无需重启服务器。 接下来,我们需要创建`log4j.properties`配置文件,定义日志输出的级别、格式和目的地。...
通过合理配置Log4j的日志文件存放位置,可以有效地管理日志信息,便于问题定位和系统监控。 需要注意的是,在配置日志文件存放位置的时候,需要考虑到安全性和日志文件的管理策略,避免日志文件过大导致磁盘空间...
-- log4j配置文件的位置 --> <param-value>/WEB-INF/log4j.properties 3.2 配置log4j.properties文件 在WEB-INF目录中添加log4j.properties文件,内容如下: log4j.rootLogger=DEBUG, A1 log4j.appender.A1=...
接下来是 log4j 配置相关的参数,包括 `log4jConfigLocation`、`webAppRootKey` 和 `log4jRefreshInterval` 等。这些参数用于指定 log4j 配置文件的位置、应用程序的根目录和 log4j 配置刷新间隔等。 之后是多个 `...
2. **配置Log4j配置文件的位置**:接下来,通过`<context-param>`元素设置`log4jConfigLocation`参数,指明Log4j配置文件的位置。例如,`<param-value>classpath:conf/log4j.xml</param-value>`表示配置文件位于类...
`webAppRootKey`参数用于设置应用的根目录键,Log4jConfigListener则会在启动时寻找log4j.properties或log4j.xml配置文件,从而初始化日志系统。 5. **Struts2与Spring整合** 当Struts2和Spring整合时,通常需要...
`Log4jConfigListener`用于初始化Log4j的日志配置。例如,可以通过以下方式在`web.xml`中配置: ```xml <param-name>webAppRootKey <param-value>your.app.name <listener-class>org.springframework....
- `log4jConfigLocation`: 日志配置文件的位置,例如`/WEB-INF/log4j.properties`,用于设置日志记录行为。 - `webAppRootKey`: 应用的全局唯一标识,例如`/myapp`,用于识别和访问特定的应用程序。 3. Context配置...
- `log4jConfigLocation`:设置日志系统的路径,通常为"/WEB-INF/log4j.properties"。 - `webAppRootKey`:应用程序的唯一名称。 4. **控制配置文件**:每个应用程序的控制配置文件至少包含三种Bean: - **...
5. **log4jConfigLocation**:定义日志配置文件的位置,如`/WEB-INF/log4j.properties`。日志配置文件控制RED5服务器的日志输出行为。 6. **webAppRootKey**:这个参数定义了应用程序的全局唯一名称,例如`/myapp`...
`log4jConfigLocation`是用来设定日志配置文件的位置,例如"/WEB-INF/log4j.properties",这对于调试和监控RED5的运行状态至关重要。 `webAppRootKey`参数是应用的全局唯一名称,用于识别和区分不同的RED5应用程序...
<param-value>/WEB-INF/log4j.properties ``` 6. **webAppRootKey**:指定程序的全局唯一标识名称。 ```xml <param-name>webAppRootKey <param-value>/myapp ``` #### 四、Handler配置文件的Bean配置...
它定义了初始化参数,如web应用程序的根目录(webAppRootKey)和log4j配置文件的位置(log4jConfigLocation),以及监听器来初始化日志系统。 1.2. 配置Eclipse环境对于提高开发效率至关重要。这包括创建Java工程,...
- **context-param**:配置应用程序上下文参数,包括`webAppRootKey`和`log4jConfigLocation`,后者用于指定log4j配置文件的位置。 - **context-param**:配置Spring配置文件的位置,如`/WEB-INF/spring/...