Ⅰ 如何在web.xml配置log4j
<servlet>
<servlet-name>log4j-init</servlet-name>
<servlet-class>com.log4j.Log4jInit</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
最基本的这样的就行
Ⅱ log4j怎么配置日志输出路径
以DailyRollingFileAppender 为例:假设每天一个日志文件
有以下设置:
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=app.log
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %5p - %c -%-4r [%t] - %m%n
此时生成日志文件将位于tomcat的bin目录下,如要将日志文件保存在 :根目录/web-info/logs/下,个人有以下4种解决方案:
1 绝对路径
log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/项目/WEB-INF/logs/app.log
但这种写法灵活性很差
以下3中使用相同的设置原理: jvm的环境变量
2:spring的Log4jConfigListener
通过以下配置:
< context-param>
<param-name>webAppRootKey</param-name>
<param-value>webApp.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
< listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
...
log4j.appender.logfile.File=${webApp.root}/WEB-INF/logs/app.log
...
来解决
2:使用已有jvm变量:
例如:
log4j.appender.logfile.File=${user.home}/logs/app.log
日志将位于:例如windows:C:\Documents and Settings\joe\logs\app.log
3 自己设置目录,也就是在项目启动时通过System.setProperty设置
通过实现ServletContextListener来解决:例如
public class log4jlistener implements ServletContextListener {
public static final String log4jdirkey = "log4jdir";
public void contextDestroyed(ServletContextEvent servletcontextevent) {
System.getProperties().remove(log4jdirkey);
}
public void contextInitialized(ServletContextEvent servletcontextevent) {
String log4jdir = servletcontextevent.getServletContext().getRealPath("/");
//System.out.println("log4jdir:"+log4jdir);
System.setProperty(log4jdirkey, log4jdir);
}
}
web.xml配置:
<listener>
<listener-class>com.log4j.log4jlistener</listener-class>
</listener>
log4j.prtperties 配置:
log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log
来解决。
Ⅲ springmvc和mybatis框架搭建,web.xml需要log4j配置吗
log4j是用来保存日志的,如果你需要查看springmvc和mybatis的运行情况,就配置他。如果不需要就可以忽略。
Ⅳ java web项目中关于log4j的运用
1、2只要配置一个,不过:
1配置需要配合使用Spring
2配置需要自己写Log4jInitServlet
其实还有更简单的,只要把log4j.properties放在任意一个src目录下就可以了,什么额外的配置都不需要。
Ⅳ log4j在java的web项目中怎么用的,如何配置等等。。
在web.xml中添加配置:
<!-- 配置log4j配置文件的路径,可以是xml或 properties(此参数必须配)-->
下面使用了classpath 参数指定log4j.properties文件的位置,这样log4j的配置文件就不用非要放到src的下面:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:config/log4j/log4j.properties</param-value>
</context-param>
使用spring的监听器,当应用启动时来读取log4j的配置文件
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Ⅵ log4j.xml 配置文件支持配置时区吗。如果支持,如何配置
1.将log4j-1.2.14.jar加入你的项目中; 2.在src/下创建log4j.properties|log4j.xml文件; 3.在web.xml中配置log4j的信息,如下: <context-param> ,ywCYwR
Ⅶ java 如何配置log4j日志文件保存路径
以DailyRollingFileAppender 为例:假设每天一个日志文件
有以下设置:
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=app.log
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %5p - %c -%-4r [%t] - %m%n
此时生成日志文件将位于tomcat的bin目录下,如要将日志文件保存在 :根目录/web-info/logs/下,个人有以下4种解决方案:
1 绝对路径
log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/项目/WEB-INF/logs/app.log
但这种写法灵活性很差
以下3中使用相同的设置原理: jvm的环境变量
2:spring的Log4jConfigListener
通过以下配置:
< context-param>
<param-name>webAppRootKey</param-name>
<param-value>webApp.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
< listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
...
log4j.appender.logfile.File=${webApp.root}/WEB-INF/logs/app.log
...
来解决
2:使用已有jvm变量:
例如:
log4j.appender.logfile.File=${user.home}/logs/app.log
日志将位于:例如windows:C:\Documents and Settings\joe\logs\app.log
3 自己设置目录,也就是在项目启动时通过System.setProperty设置
通过实现ServletContextListener来解决:例如
public class log4jlistener implements ServletContextListener {
public static final String log4jdirkey = "log4jdir";
public void contextDestroyed(ServletContextEvent servletcontextevent) {
System.getProperties().remove(log4jdirkey);
}
public void contextInitialized(ServletContextEvent servletcontextevent) {
String log4jdir = servletcontextevent.getServletContext().getRealPath("/");
//System.out.println("log4jdir:"+log4jdir);
System.setProperty(log4jdirkey, log4jdir);
}
}
web.xml配置:
<listener>
<listener-class>com.log4j.log4jlistener</listener-class>
</listener>
log4j.prtperties 配置:
log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log
来解决。
Ⅷ log4j.properties文件是存在的,在web.xml中也配置了,为什么还会报上面的错误
文件路径配错了。。。。
Ⅸ s2sh框架,中加入log4j架包,在src下有log4j.properties文件,没有在web.xml里配置它,但为什么就会自动
1.将log4j-1.2.14.jar加入你的项目中;
2.在src/下创建log4j.properties|log4j.xml文件;
3.在web.xml中配置log4j的信息,如下:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
4.在项目webroot下创建你想要保存日志文件的文件夹及文件,如webroot/logs/web_app.log;
具体log4j.properties文件,给你一个示例吧,如下:
log4j.rootLogger=INFO, stdout, logfile
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.appender.stdout.layout.ConversionPattern=- %m%n
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=$/logs/webapp.log
log4j.appender.logfile.MaxFileSize=512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.logger.com.opensymphony.xwork2=ERROR
# Control logging for other open source packages
log4j.logger.org.springframework=ERROR
log4j.logger.org.quartz=ERROR
log4j.logger.net.sf.ehcache=ERROR
log4j.logger.net.sf.navigator=ERROR
log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=ERROR
# Struts OgnlUtil issues unimportant warnings
log4j.logger.com.opensymphony.xwork2.util.OgnlUtil=error
log4j.logger.com.opensymphony.xwork2.ognl.OgnlValueStack=error
具体写法可根据自己的项目进行配置。
Ⅹ springmvc怎么配置log4j2
增加pom配置,让maven加载log4j包
<!-- log4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
修改web.xml,把log4j加到项目中
<!-- Log4j配置 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/log4j/log4j.xml</param-value>
</context-param>
<!-- 加载log4j配置文件 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
根据web.xml配置的路径,在src/main/resource目录下新建log4j/log4j.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %l %m%n" /> </layout> <!--限制输出级别 --> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMax" value="ERROR" /> <param name="LevelMin" value="DEBUG" /> </filter> </appender> <root> <priority value="debug" /> <appender-ref ref="CONSOLE" /> </root> </log4j:configuration>
经过上面的步骤后,log4j就配置好了,接下来是使用,在DemoController中使用,使用slf4j接口,代替log4j,这样假如以后不用log4j了,用logback等其它日志框架,只需修改配置文件,不需要修改java代码
package com.my1.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class DemoController {
private static Logger logger = LoggerFactory.getLogger(DemoController.class);
@RequestMapping(value = "/toPage1.htm")
public ModelAndView toPage1() {
logger.debug("TEST");
return new ModelAndView("page1");
}
}
由于用了springmvc框架,日志配置好后,会输出很多spring日志,在log4j.xml中,增加一段配置,修改spring包的日志输出级别
<!-- 通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中 -->
<category name="org.springframework">
<priority value="error" />
<appender-ref ref="CONSOLE" />
</category>
log4j的自定义输出格式说明
<!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->
<!-- %r 输出自应用启动到输出该log信息耗费的毫秒数 -->
<!-- %c 输出所属的类目,通常就是所在类的全名 -->
<!-- %t 输出产生该日志事件的线程名 -->
<!-- %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” -->
<!-- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日
22:10:28,921 -->
<!-- %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10) -->
log4j的输出方式说明
<!-- Log4j提供的appender有以下几种: -->
<!-- org.apache.log4j.ConsoleAppender(控制台), -->
<!-- org.apache.log4j.FileAppender(文件), -->
<!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), -->
<!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), -->
<!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) -->