具体配置在log4j.properties里log4j.logger.com.chouy.Class1=DEBUG,CONSOLElog4j.logger.com.chouy.Class2=INFO,CONSOLE以此类推。log4j.logger. 这个是前缀
然后后面跟上你的包名和类名。
然后后面跟上你的包名和类名。
解决方案 »
- 有关httpclient转码问题
- 急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急。。。。。报错啊,高分求解啊,
- 求助 关于JDOM
- Tomcat6.0连接池连接mysql5.0配置问题
- 存储过程取结果集
- webwork+Hibernate
- 响应自动发送邮件
- 如何用Jbuilder X开发MDB
- 我的TOMCAT怎么设置JSP的目录
- 高分:jb8产生ejb的路径怎么设置???????
- 为什么在tomcat3.0下可以访问的struts应用,部署到5.5下无法访问???
- 请教actionservlet填充actionform的实现原理
package log4jtest;import org.apache.log4j.Logger;
import org.apache.log4j.Priority;
import org.apache.log4j.PropertyConfigurator;public class ClassLog
{
static Logger logger = Logger.getLogger(ClassLog2.class.getName());
public ClassLog()
{
}
public static void main(String[] args)
{
PropertyConfigurator.configure
("C:\\eclipse\\workspace\\mytest\\log4jtest\\log4j.properties");
logger.debug("Start of the main() in classlog");
logger.info("Just testing a log message with priority set to INFO");
logger.warn("Just testing a log message with priority set to WARN");
logger.error("Just testing a log message with priority set to ERROR");
logger.fatal("Just testing a log message with priority set to FATAL");
logger.log(Priority.WARN,"Testing a log message use a alternate form");
logger.debug(ClassLog2.class.getName());
ClassLog2 cl2 = new ClassLog2();
cl2.log();
}
}////////////////// ClassLog2.java ///////////////////
package log4jtest;import org.apache.log4j.Logger;
import org.apache.log4j.Priority;
import org.apache.log4j.PropertyConfigurator;public class ClassLog2
{
static Logger logger = Logger.getLogger(ClassLog2.class.getName());
public ClassLog2()
{
}
public void log()
{
PropertyConfigurator.configure("C:\\eclipse\\workspace\\mytest\\log4jtest\\log4j.properties");
logger.debug("Start of the main() in classlog2");
logger.info("Just testing a log message with priority set to INFO");
logger.warn("Just testing a log message with priority set to WARN");
logger.error("Just testing a log message with priority set to ERROR");
logger.fatal("Just testing a log message with priority set to FATAL");
logger.log(Priority.WARN,"Testing a log message use a alternate form");
logger.debug(ClassLog2.class.getName());
}
}///////////////// log4j.properties ////////////////
log4j.logger=debug,stdout,S,R#2区
#Print only messages of priority WARN or higher for your category
log4j.logger.log4jtest.ClassLog=WARN,stdout,R
#log4j.logger.log4jtest.ClassLog=WARN
log4j.logger.log4jtest.ClassLog2=DEBUG,S
#log4j.logger.log4jtest.ClassLog2=DEBUG#3区
#### First appender writes to console
log4j.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=%5p [%t] (%F:%L) - %m%n#4区
#### Second appender writes to a file
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=c:\\example.log2
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%nlog4j.appender.stdout2=org.apache.log4j.ConsoleAppender
log4j.appender.stdout2.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout2.layout.ConversionPattern=[%t] (%F:%L) - %m%nlog4j.appender.S=org.apache.log4j.RollingFileAppender
log4j.appender.S.File=c:\\example.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=%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%c %d{ISO8601}
-- %p -- %m%n"/>
</layout>
</appender> <appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:\\logs\\app-debug.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%c %d{ISO8601}
-- %p -- %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender> <appender name="INFO" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:\\logs\\app-info.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%c %d{ISO8601}
-- %p -- %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
</appender> <appender name="WARN" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:\\logs\\app-warn.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%c %d{ISO8601}
-- %p -- %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="WARN" />
<param name="LevelMax" value="WARN" />
</filter>
</appender> <appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="C:\\logs\\app-error.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%c %d{ISO8601}
-- %p -- %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender> <root>
<priority value="debug"/>
<appender-ref ref="STDOUT"/>
<appender-ref ref="DEBUG"/>
<appender-ref ref="INFO"/>
<appender-ref ref="WARN"/>
<appender-ref ref="ERROR"/>
</root></log4j:configuration>
我的要求是根据类名和包名决定是否输出, 并不是把不同级别的日志输出到不同的文件中.我已经用过滤器把这个问题解决了.
结贴了.
把我写的过滤器也贴上来:
////////////////////// 配置文件: ////////////////////////
<filter class="log4jtest.ClassLogFilter">
<param name="StringToMatch" value="log4jtest.CompareTools"/>
<param name="AcceptOnMatch" value="false"/>
</filter>///////////////////// log4jtest.ClassLogFilter ///////////////////
package log4jtest;import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.varia.StringMatchFilter;public class ClassLogFilter extends StringMatchFilter
{
String stringToMatch = null;
boolean acceptOnMatch = true; @Override
public int decide(LoggingEvent event)
{
// System.out.println(event.getLoggerName().indexOf(this.getStringToMatch())
// == -1);
System.out.println("acceptOnMatch = " + acceptOnMatch);
System.out.println("stringToMatch = " + stringToMatch);
System.out.println("event.getLoggerName() = " + event.getLoggerName());
System.out.println(event.getLoggerName().indexOf(this.stringToMatch));
if (event.getLoggerName().indexOf(this.stringToMatch) == -1)
return Filter.ACCEPT;
else
// if (acceptOnMatch)
return Filter.DENY;
// else
// return Filter.DENY;
} public boolean getAcceptOnMatch()
{
return acceptOnMatch;
} public void setAcceptOnMatch(Boolean acceptOnMatch)
{
this.acceptOnMatch = acceptOnMatch;
} public String getStringToMatch()
{
return stringToMatch;
} public void setStringToMatch(String stringToMatch)
{
this.stringToMatch = stringToMatch;
}
}返回结果是返回ACCEPT显示, 返回DENY就不显示, 返回NATRUAL也显示.
具体过滤方法可以自己来定义.
我这里写的不是很详细,有兴趣的朋友可以自己去看看文档.