尝试将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会根据配置将日志信息输出到指定的文件夹中。这不仅方便了日志的管理和查看,还可以通过设置不同的日志级别来控制输出的信息量,例如在开发环境中开启DEBUG级别以获取更...
上述配置中,`log4j.appender.FILE.File`指定了日志文件的路径,`${user.home}/logs/myapp.log`表示日志将被写入用户主目录下的logs文件夹中的myapp.log文件。通过改变这个路径,我们就能动态地改变日志输出的位置。...
在使用 Log4j2 之前,需要在 Maven 项目中引入 Log4j2 的依赖。我们可以在 pom.xml 文件中添加以下依赖项: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-web <groupId>org....
2. 添加Log4j2的配置文件log4j2-spring.xml到资源文件夹中,如下所示: ```xml [%t] %-5level %logger{36} - %msg%n" /> ``` 3. 在Java代码中,通过SLF4J的Logger接口记录日志: ```java...
通过这个项目,你可以学习到如何在实际开发中应用Log4j进行日志记录,如何配置不同的Appender和Layout,以及如何处理异常和性能优化。 总之,Log4j在ASP.NET中的应用为开发者提供了一个强大而灵活的日志工具,能够...
引入Log4j到项目中,一般需要在类路径下添加对应的jar文件,并通过配置文件(如`log4j2.xml`或`log4j2.json`)来定制日志行为。配置文件可以控制日志输出的位置(如文件、控制台、网络等)、级别、过滤规则以及使用...
Log4j是一个广泛使用的开源日志框架,它提供了灵活的日志配置和丰富的日志级别,使得开发者可以方便地控制日志输出。本文将详细介绍如何在MyEclipse环境下导入Log4j包并设置日志配置,以便在项目中使用。 首先,...
Log4j允许开发者控制日志信息的输出级别(如DEBUG、INFO、WARN、ERROR等),并且可以配置输出到不同的目的地,如控制台、文件、数据库等。在Spring框架中,通过配置log4j.properties或log4j.xml,可以实现对应用日志...
文本文件记录日志的简单实用的日志类, ... 3)可以指定保持日志文件文件夹,如果不指定日志文件夹,Web应用保持到Bin文件夹,Windows Forms应用保持到.EXE文件所在的文件夹。 4)可以指定日志文件的前缀。
在本节视频教程中,我们将深入探讨如何在Java项目中集成SSH(Struts、Spring、Hibernate)框架,并结合Maven构建工具以及Bootstrap前端框架,来添加和配置`log4j.properties`日志文件。这个过程对于任何Java开发人员...
配置文件通常是`log4j.properties`或`log4j.xml`,它们定义了日志记录的行为,包括日志级别(DEBUG, INFO, WARN, ERROR, FATAL)、输出目的地(控制台、文件、数据库等)、布局格式(如PatternLayout)以及过滤器等...
3. **初始化Log4j**: 在Web应用启动时加载Log4j配置,并初始化日志系统。 4. **使用Logger**: 在代码中通过`Logger.getLogger()`方法获取Logger实例,然后调用其`debug()`, `info()`, `warn()`, `error()`等方法...
- **灵活性**:Log4j允许用户在运行时定义输出的日志级别,并且可以自定义输出日志的格式。 - **强大的配置能力**:可以通过XML、Properties文件或编程的方式进行配置。 - **高性能**:Log4j提供了多种日志Appender...
Log4Net的配置通常通过XML配置文件(例如:App.config或Web.config)来完成,其中定义了日志的输出级别、目标及格式。 接着,"TestLog4NetFile.csproj"是VS2008项目文件,它包含了项目设置、引用和构建指令等信息。...
- 对于Log4j,需要在项目类路径下放置`log4j.properties`或`log4j.xml`文件,定义日志的配置信息,如Appender(输出目的地)、Layout(格式)和Level(级别)。 2. **日志输出**: - 日志输出的位置通常在`$...
log4net是Apache软件基金会的Jakarta项目下的一款强大、灵活的日志记录工具,广泛应用于.NET框架下的各种应用程序,包括Web应用和WinForm应用。它提供了丰富的日志记录功能,支持多种输出方式,如文件、数据库、...
总结一下,Log4Net在ASP.NET MVC5中的配置主要包括四个部分:安装Log4Net包、在Web.config中配置日志设置、在Global.asax.cs中激活配置,以及在代码中使用Logger接口记录日志。这个过程有助于提升项目的可维护性和...
初始化时,你需要在项目的配置文件(如App.config或Web.config)中配置log4net,指定日志文件的存储位置和格式。 为了实现按照年、月、日自动创建日志文件,你可以自定义`Appender`,如`DailyRollingFileAppender`...
Log4j Web跟踪器 Log4j Web Tracker是一个开源Web工具,用于在运行时设置应用程序的配置记录器。 它还具有一个选项卡,该选项卡允许在运行时读取日志或下载日志。 它分布在一个小的.jar文件(log4jwebtracker.jar)...
"Web1"文件夹可能是项目源代码的一部分,里面可能包含实现这两个DEMO的ASP.NET Web应用程序。 综上所述,Elmah+MongoDB和Log4Net+MongoDB都是利用MongoDB来存储和管理大型网站日志的有效方案。通过这两种方法,我们...