编写自己的Java主类后,如何查看日志信息

问题描述

| 我正在使用包含许多java类的程序包,其中定义了许多“ 0”对象。现在,我使用这些类编写自己的Java主类。如何打开日志信息? 我已经准备好log4j.properties文件。但是我不确定要使它生效必须在java主类中包括什么。 谢谢。 编辑 我的log4j.properties文件具有以下内容
log4j.rootLogger = DEBUG,sysout
log4j.appender.sysout=org.apache.log4j.ConsoleAppender
log4j.appender.sysout.layout=org.apache.log4j.PatternLayout
包类使用记录器,如下所示:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
...
public class AClass {
private static final Log log = LogFactory.getLog(AClass.class);
log.debug(\"Some info \");
...
我在问我在主类中需要做什么才能在stdout中打印出日志记录信息。     

解决方法

尽管可能,但您不在Java主类中这样做。您需要修改log4j.properties。 在属性文件中应该已经出现了一个根附加程序。将级别设置为DEBUG,您应该看到每条日志消息。我建议尽管先定义一个fileappender。这样,您可以使用自己喜欢的文本编辑器来浏览日志消息。 您应该为附加程序的PatternLayout定义转换模式。 例如:
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
尝试将以下代码添加到您的主类中
import org.apache.log4j.BasicConfigurator;
在main()中:
BasicConfigurator.configure();
这将使用简单的配置,该配置应将所有日志消息输出到控制台。根据Apache日志记录手册,您可以像下面这样将配置文件的名称作为参数发送:
 import com.foo.Bar;

 import org.apache.log4j.Logger;
 import org.apache.log4j.PropertyConfigurator;

 public class MyApp {

   static Logger logger = Logger.getLogger(MyApp.class.getName());

   public static void main(String[] args) {


     // BasicConfigurator replaced with PropertyConfigurator.
     PropertyConfigurator.configure(args[0]);

     logger.info(\"Entering application.\");
     Bar bar = new Bar();
     bar.doIt();
     logger.info(\"Exiting application.\");
   }
 }
我假设记录器jar位于类路径中。我不了解apache日志记录框架,但Log4J会向控制台(或stderr)发送一条有关找不到配置文件的消息,根据发送到stdout的内容,它很容易被忽略。同样,(同样是log4j)属性文件所在的目录也必须位于CLASSPATH中。 我想到要仔细检查日志文件的预期名称。 Log4J使用log4j.properties,但这是Apache框架所期望的吗?无论哪种方式,都可以在实例化记录器时声明配置文件的名称。不知道方法名是什么。