`

log4j日志输出到web项目指定文件夹

阅读更多
    尝试将log4j的文件日志输出到web工程制定目录,遇到了很多问题,最终搞定,下面是记录。
    其原理在于log4j的配置文件支持服务器的vm的环境变量,如${oss.log4j.path},在log4j加载配置文件之前,先用System.setProperty("", "")设置好日志文件路径,这一操作通过一个初始的servlet来实现

1. log4j.properties文件
log4j.rootCategory=debug,stdout,ROLLFILE,R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) -%m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c -%m%n

log4j.appender.R.File=${oss.log4j.path}logs/log.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1

log4j.appender.ROLLFILE = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ROLLFILE.File = ${oss.log4j.path}logs/log.html
log4j.appender.ROLLFILE.Append = true
log4j.appender.ROLLFILE.Threshold = DEBUG
log4j.appender.ROLLFILE.layout = org.apache.log4j.HTMLLayout 


2. servlet。配置web服务器的vm环境变量
package com.jesse.onlineshop.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.log4j.Logger;

/**
 * 将配置信息读入系统变量
 * @author Administrator
 *
 */
public class SystemServlet extends HttpServlet {
	
	private static final Logger logger = Logger.getLogger(SystemServlet.class);
	
	private static final long serialVersionUID = -833322220864312415L;

	@Override
	public void init() throws ServletException {
        String rootPath = this.getServletContext().getRealPath("/");  
        
        logger.info(rootPath);
        
        String log4jPath = this.getServletConfig().getInitParameter("oss.log4j.path");  
        //若没有指定oss.log4j.path初始参数,则使用WEB的工程目录  
        log4jPath = (log4jPath==null||"".equals(log4jPath))?rootPath:log4jPath;  
        System.setProperty("oss.log4j.path", log4jPath);  
        super.init();  
	}

}


3. web.xml. 不需要配置servlet-mapping,load-on-startup设置为0,会在web容器启动时候就装入该servlet
	<servlet>
		<servlet-name>systemServlet</servlet-name>
		<servlet-class>com.jesse.onlineshop.servlet.SystemServlet</servlet-class>
		<init-param>
			<param-name>oss.log4j.path</param-name>
			<param-value></param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
	</servlet>


4. 结果


5. 疑惑
在log4j.properties配置文件中,日志文件路径需要配置成${oss.log4j.path}logs/log.html
在配制成${oss.log4j.path}/logs/log.html时不能输出,但是通过输出System.getProperty("oss.log4j.path")时输出的路径并不包含"/"。所以不理解为什么最终会在这里加上一个"/"的。
分享到:
评论

相关推荐

    log4j 配置日志文件,把日志信息输出到项目的某个文件夹下

    完成这些步骤后,当你的应用程序运行时,log4j会根据配置将日志信息输出到指定的文件夹中。这不仅方便了日志的管理和查看,还可以通过设置不同的日志级别来控制输出的信息量,例如在开发环境中开启DEBUG级别以获取更...

    log4j(二):动态配置日志输出路径

    上述配置中,`log4j.appender.FILE.File`指定了日志文件的路径,`${user.home}/logs/myapp.log`表示日志将被写入用户主目录下的logs文件夹中的myapp.log文件。通过改变这个路径,我们就能动态地改变日志输出的位置。...

    Log4j2学习log4j2.xml配置模板

    在使用 Log4j2 之前,需要在 Maven 项目中引入 Log4j2 的依赖。我们可以在 pom.xml 文件中添加以下依赖项: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-web &lt;groupId&gt;org....

    slf4j+log4j2配置使用

    2. 添加Log4j2的配置文件log4j2-spring.xml到资源文件夹中,如下所示: ```xml [%t] %-5level %logger{36} - %msg%n" /&gt; ``` 3. 在Java代码中,通过SLF4J的Logger接口记录日志: ```java...

    asp.net Log4j源码

    通过这个项目,你可以学习到如何在实际开发中应用Log4j进行日志记录,如何配置不同的Appender和Layout,以及如何处理异常和性能优化。 总之,Log4j在ASP.NET中的应用为开发者提供了一个强大而灵活的日志工具,能够...

    apache-log4j-2.9.1 jar包下载

    引入Log4j到项目中,一般需要在类路径下添加对应的jar文件,并通过配置文件(如`log4j2.xml`或`log4j2.json`)来定制日志行为。配置文件可以控制日志输出的位置(如文件、控制台、网络等)、级别、过滤规则以及使用...

    Myeclipse开发项目时导入日志包

    Log4j是一个广泛使用的开源日志框架,它提供了灵活的日志配置和丰富的日志级别,使得开发者可以方便地控制日志输出。本文将详细介绍如何在MyEclipse环境下导入Log4j包并设置日志配置,以便在项目中使用。 首先,...

    spring jar 包 _ log4j-1.2.17.jar_commons-logging.jar

    Log4j允许开发者控制日志信息的输出级别(如DEBUG、INFO、WARN、ERROR等),并且可以配置输出到不同的目的地,如控制台、文件、数据库等。在Spring框架中,通过配置log4j.properties或log4j.xml,可以实现对应用日志...

    log日志文件的读取

    文本文件记录日志的简单实用的日志类, ... 3)可以指定保持日志文件文件夹,如果不指定日志文件夹,Web应用保持到Bin文件夹,Windows Forms应用保持到.EXE文件所在的文件夹。 4)可以指定日志文件的前缀。

    [SSH+Maven+Bootstrap视频教程]_17. 添加 log4j.properties 配置文件.zip

    在本节视频教程中,我们将深入探讨如何在Java项目中集成SSH(Struts、Spring、Hibernate)框架,并结合Maven构建工具以及Bootstrap前端框架,来添加和配置`log4j.properties`日志文件。这个过程对于任何Java开发人员...

    log4j的jar包和配置文件

    配置文件通常是`log4j.properties`或`log4j.xml`,它们定义了日志记录的行为,包括日志级别(DEBUG, INFO, WARN, ERROR, FATAL)、输出目的地(控制台、文件、数据库等)、布局格式(如PatternLayout)以及过滤器等...

    我的第一个log4j测试程序

    3. **初始化Log4j**: 在Web应用启动时加载Log4j配置,并初始化日志系统。 4. **使用Logger**: 在代码中通过`Logger.getLogger()`方法获取Logger实例,然后调用其`debug()`, `info()`, `warn()`, `error()`等方法...

    log4j配置.txt

    - **灵活性**:Log4j允许用户在运行时定义输出的日志级别,并且可以自定义输出日志的格式。 - **强大的配置能力**:可以通过XML、Properties文件或编程的方式进行配置。 - **高性能**:Log4j提供了多种日志Appender...

    Log4Net VS2008测试

    Log4Net的配置通常通过XML配置文件(例如:App.config或Web.config)来完成,其中定义了日志的输出级别、目标及格式。 接着,"TestLog4NetFile.csproj"是VS2008项目文件,它包含了项目设置、引用和构建指令等信息。...

    tomcat-juli.jar,tomcat-juli-adapters.jar,log4j-1.2.12.jar tomcat 6日志输出

    - 对于Log4j,需要在项目类路径下放置`log4j.properties`或`log4j.xml`文件,定义日志的配置信息,如Appender(输出目的地)、Layout(格式)和Level(级别)。 2. **日志输出**: - 日志输出的位置通常在`$...

    log4net web,winform demo

    log4net是Apache软件基金会的Jakarta项目下的一款强大、灵活的日志记录工具,广泛应用于.NET框架下的各种应用程序,包括Web应用和WinForm应用。它提供了丰富的日志记录功能,支持多种输出方式,如文件、数据库、...

    MVC5中Log4Net写日志配置

    总结一下,Log4Net在ASP.NET MVC5中的配置主要包括四个部分:安装Log4Net包、在Web.config中配置日志设置、在Global.asax.cs中激活配置,以及在代码中使用Logger接口记录日志。这个过程有助于提升项目的可维护性和...

    C#,WPF日志管理 C#编程--项目常用日志保存

    初始化时,你需要在项目的配置文件(如App.config或Web.config)中配置log4net,指定日志文件的存储位置和格式。 为了实现按照年、月、日自动创建日志文件,你可以自定义`Appender`,如`DailyRollingFileAppender`...

    log4jwebtracker:Java Web工具在运行时设置应用程序中Log4j追加程序的日志级别,并在运行时读取日志

    Log4j Web跟踪器 Log4j Web Tracker是一个开源Web工具,用于在运行时设置应用程序的配置记录器。 它还具有一个选项卡,该选项卡允许在运行时读取日志或下载日志。 它分布在一个小的.jar文件(log4jwebtracker.jar)...

    大型网站日志记录的方案DEMO Elamh+MongoDB ,Log4Net+MongoDB

    "Web1"文件夹可能是项目源代码的一部分,里面可能包含实现这两个DEMO的ASP.NET Web应用程序。 综上所述,Elmah+MongoDB和Log4Net+MongoDB都是利用MongoDB来存储和管理大型网站日志的有效方案。通过这两种方法,我们...

Global site tag (gtag.js) - Google Analytics