Log4j在指定log文件位置时一般是使用绝对路径,这样在部署环境发生变化时显得十分麻烦,在网上找了很多种方法,个人感觉以下方法比较适用:
由于spring也会加载log4j.properties,如果加载不到就往控制台打log信息。Spring提供了
一个Log4jConfigListener,本身就能通过web.xml中配置来指定位置加载log4j配置文件和log输出路径,注意该
listener需要放在spring的Listener之前。
事实上,Log4jConfigListener更适合log4j在web工程中使用,原因如下:
1. 动态的改变记录级别和策略,不需要重启Web应用,如《Effective Enterprise Java》所说。
2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径。
因为 系统把web目录的路径压入一个叫webapp.root的系统变量。这样写log文件路径时不用写绝对路径了.
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/settlement.log
3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path。
4. log4jRefreshInterval为60000表示 开一条watchdog线程每60秒扫描一下配置文件的变化;
在web.xml 添加
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
log4j配置文件如下:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.rootLogger=info, stdout,R
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=${webapp.root}/WEB-INF/logs/settlement.log
log4j.appender.R.DatePattern = "."yyyy-MM
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %p [%c] - %m%n
另:
Log4j提供的appender有以下几种
o org.apache.log4j.ConsoleAppender(控制台)
o org.apache.log4j.FileAppender(文件)
o org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
o org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
o org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
我们开发的B/S结构系统,在服务端一般要有日常运行的日志记录。保存成日志文件形式的时候,大家经常会遇到一个问题:日志文件过大。上百兆的日志文件对
查阅日志信息来说也是一个问题。所以我希望能够每天或每个月产生一个日志文件,这样文件不至于过大。
或者根据日志文件大小来判断,超过规定大小,日志自动增加新文件。
在log4j中这两种方式的实现都很简单,只要在配置文件中设置即可。
一、按照一定时间产生日志文件,配置文件如下:
# Set root logger level to ERROR and its only appender to A1.
log4j.rootLogger=ERROR,R
# R is set to be a DailyRollingFileAppender.
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=backup.log
log4j.appender.R.DatePattern = "."yyyy-MM-dd
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
以上配置是每天产生一个备份文件。其中备份文件的名字叫backup.log。
具体的效果是这样:当天的日志信息记录在backup.log文件中,前一天的记录在名称为 backup.log.yyyy-mm-dd 的文件中。
类似的,如果需要每月产生一个文件可以修改上面的配置:
将
log4j.appender.R.DatePattern = "."yyyy-MM-dd
改为
log4j.appender.R.DatePattern = "."yyyy-MM
二、根据日志文件大小自动产生新日志文件
配置文件内容如下:
# Set root logger level to ERROR and its only appender to A1.
log4j.rootLogger=ERROR,R
# R is set to be a RollingFileAppender.
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=backup.log
#log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
其中:
#日志文件的大小
log4j.appender.R.MaxFileSize=100KB
# 保存一个备份文件
log4j.appender.R.MaxBackupIndex=1
另:
日志显示级别:
它们定义了日志显示的级别,一共分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG
< INFO < WARN < ERROR <
FATAL,明白这一点很重要,这里Log4j有一个规则:假设设置了级别为P,如果发生了一个级别Q比P高,则可以启动,否则屏蔽掉。
分享到:
相关推荐
在`log4j.properties`文件中,可以通过定义变量的方式来指定日志文件的相对路径。这种方式的好处在于可以在程序启动前通过外部环境变量或者配置文件中的键值对来设置这些变量,从而达到动态配置的目的。 ##### 示例...
Log4j是一个广泛使用的...总结来说,Log4j中的相对路径问题可以通过系统属性、环境变量或动态配置来解决,确保日志文件能够在不同环境中被正确写入。这样的灵活性使得开发者无需频繁修改配置,提高了代码的可移植性。
以下是关于Log4j相对路径配置的详细说明: 首先,在`Web.xml`文件中,我们需要进行一些配置来使Log4j在Web应用启动时初始化。`<context-param>`标签用于设置Log4j的相关参数: 1. `<param-name>webAppRootKey...
Log4j是一款广泛使用的日志...通过这个简单的Log4j范例,我们可以理解如何配置和使用Log4j进行日志记录,并了解相对路径在设置日志文件时的应用。这有助于我们在开发和维护Java应用程序时更好地管理和分析日志信息。
本文通过一个具体的例子展示了如何在Java项目中使用Properties文件来配置Log4j,特别强调了完全相对路径的使用方法。这种配置方式简洁明了,适用于各种规模的应用程序。此外,文章还涉及了如何在Servlet环境中加载...
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....
3. 日志滚动:考虑使用Log4j的RollingFileAppender,自动管理旧日志文件,避免日积月累占用过多存储。 4. 性能影响:大量日志输出可能会影响应用性能,因此需要合理设置日志级别。 总结,理解和正确配置Log4j的...
- 使用绝对路径来指定log4j.properties文件的位置,但这种方式不够优雅。 - 将log4j.properties文件放置在项目的`bin/`目录下,并通过相对路径或者系统资源的方式加载配置文件。 - 如果文件放置在`bin/`目录下的...
用户需要将此jar包加入到项目的类路径中,才能使用Log4j的功能。1.2.8是一个较早的版本,虽然可能不包含最新的特性和优化,但因其稳定性和兼容性,依然在许多项目中被使用。 3. **log4j.properties** 这是一个默认...
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件还是其他地方,还可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。...
`log4j.appender.FILE`配置文件appender,如`log4j.appender.FILE.File=file.log`指定日志文件路径。`log4j.appender.FILE.Append=false`决定是否追加模式,如果为`true`,则日志将被添加到现有文件,如果为`false`...
- Tomcat本身不包含默认的log4j配置,因此在Tomcat上使用log4j相对简单直接。 - 开发者需要自行创建log4j配置文件(log4j.properties或log4j.xml),并根据项目的需要进行配置。 - **JBoss环境下log4j配置**: - ...
- `log4j.appender.*.file`: 如果是文件appender,指定日志文件的路径。 - `log4j.appender.*.append`: 是否追加到已有文件,或覆盖文件。 - `log4j.logger.*`: 可以为特定的类或包设置独立的日志级别和appender。...
#### 一、Log4j简介及使用场合 Log4j是Apache的一个开源项目,用于为Java应用程序提供日志记录功能。它的设计目标是为了简化日志记录过程,使得开发者能够更加方便地在应用程序中集成日志功能。Log4j可以应用于各种...
4. **利用类路径**:如果配置文件位于类路径(classpath)下,可以直接使用相对路径,例如`log4j.properties`。Log4j会自动搜索该文件。 标签中的“源码”意味着可能需要查看Log4j的源代码来理解其内部工作原理,而...
- 使用相对路径或环境变量指定日志文件位置,以便在不同环境下使用。 - 定期清理和归档旧的日志文件,防止磁盘空间耗尽。 通过以上介绍,我们可以看到Log4J在Web应用中的强大功能和灵活性。正确地配置和使用Log4J...
3. `log4j.appender.R.File=D:\\hello.log`:指定日志文件的路径。在这个例子中,路径是绝对路径,如果使用相对路径,需要确保它相对于Tomcat的工作目录是可访问的。 4. `log4j.appender.R.ImmediateFlush=true`:...
log4j1/log4j2中category的配置以及log的输出位置(windows和linux通用的log输出位置) 一、场景和需求 假设我现在有3个独立的用project(暂时用maven关联起来,当然也可以不用maven),一个是提供公共服务的...
### Log4cplus使用指南 #### 1. Log4cplus简介 Log4cplus是一款专为C++设计的开源日志系统,其前身是基于Java的log4j系统。这款工具由Tad E. Smith开发,并受到Apache Software License的保护。Log4cplus提供了...