Log4j

bradwoo8621 2003-03-20 11:19:30
请教一个log4j的问题.
log4j中有ERROR, WARN, INFO, DEBUG等几个等级.
我想根据不同的等级将日志输入到不同的文件中, 可以通过配置文件实现吗?
比如ERROR--> error.log
WARN-->warn.log
INFO-->info.log
DEBUG-->debug.log
...全文
47 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
rf_wu 2003-06-18
  • 打赏
  • 举报
回复
还得继续up
qjhaaaaa 2003-06-14
  • 打赏
  • 举报
回复
1、首先将log4j-1.2.8.jar包含入类路径中。
2、Log4J必须在应用的其它代码执行前完成初始化。其初始化内容如下:
import java.io.*;
import javax.servlet.*;
import org.apache.log4j.*;
public class Log4JInit extends HttpServlet {
public void init() throws ServletException {
String prefix = getServletContext().getRealPath("/");
String file = getServletConfig().getInitParameter("log4j-config-file");
// 从Servlet参数读取log4j的配置文件
if (file != null) {
PropertyConfigurator.configure(prefix + file);
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
IOException, ServletException {}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws
IOException, ServletException {}
}

3、web.xml内容配置如下:具体的文件放在 路径:\webapps\项目名称\WEB-INF\web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

<servlet>
<servlet-name>log4jinit</servlet-name>
<servlet-class>com.iss.common.util.Log4JInit</servlet-class>//这里换换成具体的初始化文件包
<init-param>
<param-name>log4j-config-file</param-name>
<param-value>WEB-INF\log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<!-- Establish the default list of welcome files -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/FileNoFound.jsp</location>
</error-page>
</web-app>
注意:上面的load-on-startup应设为1,以便在Web容器启动时即装入该Servlet。log4j.properties文件放在根的properties子目录中,也可以把它放在其它目录中。应该把.properties文件集中存放,这样方便管理。
4、log4j.properties的配置,具体的路径在\webapps\项目名称\WEB-INF\log4j.properties

在配置文件中即log4j.properties中这样设置:
#设置成根目录,所有包括debug以上级别的信息都打印出来到日志文件中
log4j.rootLogger=debug, stdout
#设置为debug,表示只能打印出debug级别的信息
log4j.logger.debug=debug, R
#设置成info,表示只能打印出info级别的信息
log4j.logger.info=info,s
#设置成error,表示只能打印出error级别的信息
log4j.logger.error = error,k
#输出debug级别以上的信息到控制台
og4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=(%F:%L) - %m%d%n
打印debug级别的信息到debugInfo.log
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=c:/webapps/debugInfo.log
log4j.appender.R.DatePattern='.'yyyy-MM-dd'.txt'
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%F:%L] - %m \r\n
#打印info级别的信息到info.log
log4j.appender.s=org.apache.log4j.RollingFileAppender
log4j.appender.s.File= c:/webapps/info.log
# Control the maximum log file size
log4j.appender.s.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.s.MaxBackupIndex=1
log4j.appender.s.layout=org.apache.log4j.PatternLayout
log4j.appender.s.layout.ConversionPattern=%p %t %c - %m%d%n
#打印error级别的信息到errorInfo.log中
log4j.appender.k=org.apache.log4j.DailyRollingFileAppender
log4j.appender.k.File=C:/Program Files/Apache Tomcat 4.0/webapps/PSA/log/error_8080.log
//log4j.appender.R.Append = true
log4j.appender.k.DatePattern='.'yyyy-MM-dd'.txt'
log4j.appender.k.layout=org.apache.log4j.PatternLayout
log4j.appender.k.layout.ConversionPattern=%d [%F:%L] - %m \r\n

5、在类中的的设置如下:
class类中如下:
static Logger debugLog=new Logger.getLogger("debug")
static Logger infoLog=new Logger.getLogger("info")
static Logger errorLog=new Logger.getLogger("error")
这样不同级别的log信息就可以打在不同的log文件中.
例如debugLog.debug(“”);就打印到上面的debuginfo中。
InfoLog.info(“”);就打印到上面的infoLog中。
qjhaaaaa 2003-06-14
  • 打赏
  • 举报
回复
1、首先将log4j-1.2.8.jar包含入类路径中。
2、Log4J必须在应用的其它代码执行前完成初始化。其初始化内容如下:
import java.io.*;
import javax.servlet.*;
import org.apache.log4j.*;
public class Log4JInit extends HttpServlet {
public void init() throws ServletException {
String prefix = getServletContext().getRealPath("/");
String file = getServletConfig().getInitParameter("log4j-config-file");
// 从Servlet参数读取log4j的配置文件
if (file != null) {
PropertyConfigurator.configure(prefix + file);
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws
IOException, ServletException {}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws
IOException, ServletException {}
}

3、web.xml内容配置如下:具体的文件放在 路径:\webapps\项目名称\WEB-INF\web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

<servlet>
<servlet-name>log4jinit</servlet-name>
<servlet-class>com.iss.common.util.Log4JInit</servlet-class>//这里换换成具体的初始化文件包
<init-param>
<param-name>log4j-config-file</param-name>
<param-value>WEB-INF\log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<!-- Establish the default list of welcome files -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/FileNoFound.jsp</location>
</error-page>
</web-app>
注意:上面的load-on-startup应设为1,以便在Web容器启动时即装入该Servlet。log4j.properties文件放在根的properties子目录中,也可以把它放在其它目录中。应该把.properties文件集中存放,这样方便管理。
4、log4j.properties的配置,具体的路径在\webapps\项目名称\WEB-INF\log4j.properties

在配置文件中即log4j.properties中这样设置:
#设置成根目录,所有包括debug以上级别的信息都打印出来到日志文件中
log4j.rootLogger=debug, stdout
#设置为debug,表示只能打印出debug级别的信息
log4j.logger.debug=debug, R
#设置成info,表示只能打印出info级别的信息
log4j.logger.info=info,s
#设置成error,表示只能打印出error级别的信息
log4j.logger.error = error,k
#输出debug级别以上的信息到控制台
og4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=(%F:%L) - %m%d%n
打印debug级别的信息到debugInfo.log
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=c:/webapps/debugInfo.log
log4j.appender.R.DatePattern='.'yyyy-MM-dd'.txt'
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d [%F:%L] - %m \r\n
#打印info级别的信息到info.log
log4j.appender.s=org.apache.log4j.RollingFileAppender
log4j.appender.s.File= c:/webapps/info.log
# Control the maximum log file size
log4j.appender.s.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.s.MaxBackupIndex=1
log4j.appender.s.layout=org.apache.log4j.PatternLayout
log4j.appender.s.layout.ConversionPattern=%p %t %c - %m%d%n
#打印error级别的信息到errorInfo.log中
log4j.appender.k=org.apache.log4j.DailyRollingFileAppender
log4j.appender.k.File=C:/Program Files/Apache Tomcat 4.0/webapps/PSA/log/error_8080.log
//log4j.appender.R.Append = true
log4j.appender.k.DatePattern='.'yyyy-MM-dd'.txt'
log4j.appender.k.layout=org.apache.log4j.PatternLayout
log4j.appender.k.layout.ConversionPattern=%d [%F:%L] - %m \r\n

5、在类中的的设置如下:
class类中如下:
static Logger debugLog=new Logger.getLogger("debug")
static Logger infoLog=new Logger.getLogger("info")
static Logger errorLog=new Logger.getLogger("error")
这样不同级别的log信息就可以打在不同的log文件中.
例如debugLog.debug(“”);就打印到上面的debuginfo中。
InfoLog.info(“”);就打印到上面的infoLog中。
tusm 2003-06-14
  • 打赏
  • 举报
回复
在配置文件中这样写:
log4j.logger.debug=debug,debugFile
log4j.logger.info=info,infoFile
log4j.logger.error=error,errorFile
logger后面的debug,info,error为标示符,在class文件中用到.
log4j.appender.debugFile.File=C:/log/debugFile.log
log4j.appender.debugFile.Append = true
log4j.appender.debugFile.DatePattern='.'yyyy-MM-dd'.txt'
log4j.appender.debugFile.layout=org.apache.log4j.PatternLayout
log4j.appender.debugFile.layout.ConversionPattern=%d [%F:%L] - %m \r\n
其它两个文件同样的配置.
class类中如下:
static Logger debugLog=new Logger.getLogger("debug")
static Logger infoLog=new Logger.getLogger("info")
static Logger errorLog=new Logger.getLogger("error")
这样不同级别的log信息就可以打在不同的log文件中.
charbee 2003-05-17
  • 打赏
  • 举报
回复
use xml config file can fix your problem.
xml config file has a filter element for it.
Zhakrin 2003-05-17
  • 打赏
  • 举报
回复
用Additivity=false.
wbw88 2003-05-13
  • 打赏
  • 举报
回复
up
shi_yingbo 2003-04-25
  • 打赏
  • 举报
回复
up
DavidBone 2003-04-21
  • 打赏
  • 举报
回复
ding
DavidBone 2003-04-20
  • 打赏
  • 举报
回复
up
shihb 2003-03-21
  • 打赏
  • 举报
回复
当然可以啦,只要配置一下config文件。
bradwoo8621 2003-03-21
  • 打赏
  • 举报
回复
log4j.rootCategory=DEBUG, R, P
log4j.appender.R=org.log4j.RollingFileAppender
log4j.appender.R.File=E:/log/debug.log
log4j.appender.R.MaxFileSize=500KB
log4j.appender.P=org.log4j.RollingFileAppender
log4j.appender.P.File=E:/log/error.log
log4j.appender.P.MaxFileSize=500KB
想这样定义两个的话, 不管输入什么日志信息, 都会同时写到两个文件中.
我想要的结果是logger.debug()输出到debug.log, 而logger.error()输出到error.log, 这样可以吗?
puppy_lu 2003-03-21
  • 打赏
  • 举报
回复
比如说定义Debug
在配置文件里面:
log4j.rootCategory=DEBUG, R
log4j.appender.R=org.log4j.RollingFileAppender
log4j.appender.R.File=E:/log/debug.log
log4j.appender.R.MaxFileSize=500KB
flyycyu 2003-03-21
  • 打赏
  • 举报
回复
up

50,535

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧