Java 如何从log4j.properties文件中获取选择性日志

Java 如何从log4j.properties文件中获取选择性日志,java,Java,我已经使用Eclipse创建了一个java项目。在那个项目中,我使用了log4j.properties文件。在项目中,在某些情况下,我使用了如下语句 logger.debug("This is from debug"); logger.info("This is from Info"); 16 [main] INFO org.quartz.core.QuartzScheduler ? Quartz Scheduler v.2.1.4 created. 我的日志文件是 # Set ro

我已经使用Eclipse创建了一个java项目。在那个项目中,我使用了log4j.properties文件。在项目中,在某些情况下,我使用了如下语句

logger.debug("This is from debug");
logger.info("This is from Info");
16   [main] INFO  org.quartz.core.QuartzScheduler  ? Quartz Scheduler v.2.1.4 created.
我的日志文件是

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE
#log4j.rootCategory=INFO, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=DEBUG, stdout

# Root logger option
 log4j.rootLogger=DEBUG,stdout
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.Threshold=DEBUG
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x – %m%n
现在,当我运行项目时,我得到了所有日志语句。例如,我在我的项目中使用Quartz定时器,所以当我运行程序时,我得到了Quartz的默认语句,如

logger.debug("This is from debug");
logger.info("This is from Info");
16   [main] INFO  org.quartz.core.QuartzScheduler  ? Quartz Scheduler v.2.1.4 created.
但我只需要自定义日志语句,即由我编写的语句。
如何实现这一点?

您可以实现类级记录器,如下所示

log4j.logger.package.classes.classOne=INFO,LOGFILE


确保删除其他log4j键(或对其进行注释),以便只记录您的log4j键

您可以按照以下方式为包和类显式设置记录器

log4j.logger.com.mycompany=INFO
log4j.logger.com.mycompany.MyClass=DEBUG

如果只需要自定义日志语句,请关闭rootLogger,并配置自定义日志,例如

log4j.rootLogger=OFF
log4j.logger.com.mycompany=DEBUG, CONSOLE

不知道如何使用属性文件进行配置,但是使用xml配置,您还可以配置一个记录器“prachi”,在代码中,您可以使用logger prachLog=logger.getLogger(“prachi”);信息(“记录普拉奇的东西”);您可以在几个类中获得该记录器。我在日志文件中添加了以上两行。但是现在我在console.log4j.logger.com.mycompany=DEBUG上没有得到任何日志语句,console表示logger.getLogger(“com.mycompany”).DEBUG(“test”);将在控制台上打印。试试看。