上一篇有提到:log4j.appender.R.File = /logs/my.log,日志文件直接输出在盘符根目录下的logs文件夹下,而不是常用的项目根目录的logs目录下,这篇说说让其输出到项目的根目录下。
一、没有spring帮助管理的情况下,如前一篇的例子:简单的servlet作为容器的。
第一种方法:
log4j.properties的文件输出配置如下:log4j.appender.R.File = /logs/my.log
1、修改web.xml,将log4j作为init-param添加到servlet配置中:
<servlet> <servlet-name>TestLog4jServlet</servlet-name> <servlet-class>com.wjl.servlet.TestLog4jServlet</servlet-class> <init-param> <param-name>log4j</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet>
2、修改TestLog4jServlet的init方法:
public void init(ServletConfig config) throws ServletException { String prifix = config.getServletContext().getRealPath("/"); //getInitParameter("log4j"):web.xml中init-param的param-name,两者必须一致 String file = config.getInitParameter("log4j"); if(file != null){ Properties prop = new Properties(); try{ prop.load(new FileInputStream(prifix+file)); //log4j.appender.R.File:log4j.properties中文件输出位置的配置,必须与配置文件中的一致 prop.setProperty("log4j.appender.R.File", prifix + prop.getProperty("log4j.appender.R.File")); PropertyConfigurator.configure(prop); }catch(IOException e){ e.printStackTrace(); } } }
第二种方法(使用系统变量的方法):
log4j.properties的文件输出配置如下:log4j.appender.R.File = ${webRoot}/logs/my.log
1、修改web.xml文件,内容与方法一种的相同。
2、修改TestLog4jServlet的init方法:
public void init(ServletConfig config) throws ServletException { String root = config.getServletContext().getRealPath("/"); String log4jLocation = config.getInitParameter("log4j"); System.setProperty("webRoot", root); if (log4jLocation!=null) { PropertyConfigurator.configure(root + log4jLocation); } }
第三种方法:使用服务器环境变量
log4j的配置文件支持服务器的vm的环境变量,格式类似${catalina.home}
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/logs_tomcat.log
log4j.appender.R.MaxFileSize=10KB
其中的${catalina.home}并非windows系统的环境变量,这个环境变量就不需要在Windows系统的环境变量中设置。之所以这样,你可以看看tomcat\bin\catalina.bat(startup,shutdown都是调用这个)里面自带有-Dcatalina.home= "%CATALINA_HOME%" 。继承这个思想,所以你也可以自己设定一个参数-Dmylog.home="D:/abc/log"到对应的服务器java启动的vm参数中。
该方法参考自:http://www.linuxidc.com/Linux/2014-09/106571.htm
没看懂什么意思,所以没有实验。
二、有spring帮助管理的:
log4j.properties的文件输出配置如下:log4j.appender.R.File = ${webRoot_root}/logs/my.log
在web.xml中初始化log4j:
<context-param> <description>日志文件的路径 </description> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <context-param> <description>log4jRefreshInterval为6000表示 开一条watchdog线程每6秒扫描一下配置文件的变化。 </description> <param-name>log4jRefreshInterval</param-name> <param-value>600000</param-value> </context-param> <context-param> <description>设置日志文件中,取系统根目录的key</description> <param-name>webAppRootKey</param-name> <param-value>webRoot_root</param-value> </context-param> <listener> <display-name>日志文件的侦听器</display-name> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener>
相关推荐
### Log4j中配置日志文件相对路径方法详解 #### 概述 在软件开发过程中,日志记录是一项重要的功能,它有助于开发者调试程序、监控应用程序的运行状态以及追踪问题。`Log4j`作为一款优秀的日志管理工具,被广泛应用...
在使用 Apache Tomcat 作为服务器时,合理配置日志框架(如 Log4j)能够极大地提高开发效率和系统的可维护性。本文将详细介绍两种常见的 Log4j 配置方式:Tomcat 级别的统一日志管理和每个 web 应用分别配置 Log4j,...
为了使配置生效,我们需要在`web.xml`中添加如下配置,让Spring容器加载log4j配置: ```xml <param-name>log4jConfigLocation <param-value>/WEB-INF/classes/log4j.properties</param-value> <!-- 指定log4j...
# 设置日志输出路径 log4j.appender.DailyRollingFile.File=/path/to/your/logfile.log # 指定日期格式,例如每天零点滚动 log4j.appender.DailyRollingFile.DatePattern='.'yyyy-MM-dd # 设置最大备份文件数量,...
Springboot 多线程应用源代码,根据线程输出到不同的日志文件, 子线程可以输出日志到父线程日志文件。 动态日志文件路径,文件名 动态输出多个日志文件 适用于复杂日志输出的用例 日志文件为RollingFile
### Log4j日志配置详解 #### 一、概述 Log4j 是一个基于 Java 的开源日志记录框架,由 Apache 软件基金会维护。它允许开发人员根据等级记录日志信息,使得用户能够控制日志信息的记录级别及去向。本文将通过一份...
3. 应用程序可能加载了其他地方的Log4j配置,例如系统级的Log4j配置。 总的来说,处理Log4j的初始化警告,关键在于正确配置和引入Log4j依赖,以及在需要使用日志的地方正确初始化logger。确保配置文件可用且路径...
- **配置示例**:例如,`log4j.rootLogger=DEBUG, FILE`表示根日志器的级别设为DEBUG,并将日志输出到名为FILE的appender。 - **Appender配置**:在properties文件中,每个appender都有自己的配置,如`log4j....
4. 定义日志输出格式:通过配置log4j.appender.CATALINA.layout为org.apache.log4j.PatternLayout,可以定义日志的格式。例如,可以设置为%d{yyyy-MM-ddHH:mm:ss.SSS}%p[%t]%c|%m%n来让日志格式和Log4j保持一致。 5...
`log4j.properties`是Apache Log4j框架中用于配置日志记录行为的核心文件之一。通过这个文件,开发者可以定义日志消息的输出方式(例如控制台或文件)、日志级别(如DEBUG、INFO等)以及日志格式等内容。正确配置`...
《log4j-1.2.17.jar及其配置文件详解》 在IT行业中,日志记录是一项至关重要的任务,它能帮助开发者追踪程序运行状况、定位错误和调试问题。Log4j,作为Apache软件基金会的一个开源项目,是Java平台上广泛使用的...
本篇将详细介绍如何在Spring项目中配置日志系统为Log4j。 首先,我们要明白Log4j是一个功能强大的日志框架,它提供了丰富的日志级别(如DEBUG、INFO、WARN、ERROR和FATAL)以及灵活的日志输出配置。Log4j的配置主要...
3. **日志输出路径** `log4j.properties`文件中定义了日志输出的具体路径和格式。例如: ``` log4j.appender.R.File=../log/log.txt ``` 这条配置表示日志将被输出到当前目录的上级目录下的`log`文件夹中的`...
这篇博客"Log4j 把不同包的日志打印到不同位置"可能详细解释了如何利用Log4j配置来实现特定包的日志定向输出,以便于管理和分析来自不同模块的日志信息。 在Java应用中,我们常常会遇到多个模块或者不同包的类同时...
总结,通过以上步骤,你已成功配置了 MyBatis 使用 Log4j 来记录日志,同时将日志输出到后台控制台和文件,这有助于在开发和调试过程中追踪问题,提高代码的可维护性。记得根据实际需求调整日志级别和输出格式,以...
2. `<param-name>log4jConfigLocation</param-name>` 指定了Log4j配置文件的路径,这里是`WEB-INF/config/log4j.properties`。这个配置告诉Web应用在哪里寻找Log4j的配置信息。 3. `<param-name>log4...
3. **Log4j配置文件**: 关键在于`log4j.properties`或`log4j.xml`配置文件,此工程中可能包含其中一个。配置文件定义了日志记录的策略,如日志级别、输出目的地、格式化样式等。例如,以下配置创建了一个每日滚动...
它是`log4j`的配置中心,通过这个文件我们可以定制日志输出的级别、格式、目标位置等。在这个场景下,我们关注的重点是如何设置多个日志文件并按日期切换。 1. **配置多个Appender**:`log4j`允许定义多个Appender...
本教程将通过一个小例子,详细讲解如何使用Log4j配置输出多个自定义路径的日志文件。 首先,我们要理解Log4j的基本架构。Log4j主要包括三个核心组件:配置器(Configurator)、日志器(Logger)和布局器(Layout)...