log4j结构化以实现一致的日志记录

时间:2015-11-25 09:37:35

标签: java logging log4j project-structure

我正在尝试为MyTest类实现log4j日志记录。代码的包结构如下所示。目前我的log4j.properties位于trial package。

的资源下

enter image description here

我有时会得到日志,但有时调试器显示" log4j:WARN没有找到记录器的appender。"所以我最终得到了:

  1. 我应该在哪里放置log4j.properties以在MyTest中始终如一地获取日志?
  2. 同一个项目可以在不同的包中有多个log4j.properties吗?
  3. 调试器/编译器如何将log4j属性与调用它的类相关联?
  4.   

    BasicPage.class

    package com.trial.pages;
        public class BasicPage{
            protected static final Logger pageLogger = Logger.getLogger(BasicPage.class);
            <some code goes here>
        }
    
      

    FirstPage.class

    package com.trial.pages.mobile;
    import package com.trial.pages;
    public class FirstPage extends BasicPage {
         public void pageMethod() {
             pageLogger.info("These are logs from the Pages.");
         }
    }
    
      

    BasicTest.class

    package com.core.data;
    public class BasicTest{
        protected static final Logger testLogger = Logger.getLogger(BasicTest.class);
        <some code goes here>
    }
    
      

    MyTest.class

    package com.trial.tests.mobile;
    import com.trial.pages.mobile.FirstPage;
    import com.core.data.BasicTest;
    public class MyTest extends BasicTest{
        public void someMethod(){
            testLogger.info("These are the logs from the test activities.");
            new FirstPage.pageMethod();
        }
    }
    

1 个答案:

答案 0 :(得分:1)

  
      
  1. 我应该在哪里放置log4j.properties以在MyTest中始终如一地获取日志?
  2.   

通常只需将log4j.xml文件放入src/main/resourcessrc/test/resources并让log4j自己找到它:不需要代码,默认的log4j初始化将会启动它。

  

2.同一个项目在不同的包中有多个log4j.properties吗?

我不会这样做,因为类加载器只接受找到的第一个。您可以在单个属性文件中为不同的记录器配置多个配置。

log4j-properties-file-multiple-loggers-in-same-class

how-can-i-create-2-separate-log-files-with-one-log4j-config-file

log4j-multiple-loggers-levels-and-appenders

<强> EDIT1:

  你可以帮我了解关于何时以及如何进行的信息   log4j.properties移动到目标/类[propertyconfigurator看起来   在里面]

构建项目时,log4j.property文件将自动移动。但该文件应该在src/main/resource/中以便自动移动。

如果是这种情况,则无需以编程方式配置属性配置程序。 Log4j可以直接使用。