java - log4j 记录器不可见

标签 java log4j project structure visibility

有人使用过 log4j 并知道“构造函数 () 不可见意味着什么”吗?

这是主类的代码:

import org.apache.log4j.xml.DOMConfigurator;
import stdGame.*;
public class Main {
  public static void main(String[] args) {
      DOMConfigurator.configureAndWatch( "data/log/myLoggerConfig.xml", 60*1000 );
      new LogTest();
    }
}

LogTest 类位于 stdGame-package 中,如您所见,它已经导入。 当将 LogTest 类与 Main 类放在同一包中时,代码可以按预期工作。 以下是 LogTest() 类的代码:

package stdGame;
import org.apache.log4j.Logger;
public class LogTest {
    private static Logger logger = Logger.getLogger(LogTest.class);
    LogTest() {
        logger.info("My info-msg in LogTest.");
        logger.error("My error-msg in LogTest.");
    }
}

尝试将它们放入同一个包中,错误消息将会消失。但我需要将它们放入单独的包中。

最后这是 myLoggerConfig.xml 文件:

  <?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="MeinAppender" class="org.apache.log4j.DailyRollingFileAppender">
  <param name="datePattern" value="'.'yyyy-MM-dd_HH-mm" />
  <param name="file" value="data/log/myLogfile.log" />
  <param name="Append" value="true" />
  <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c: %m%n" />
  </layout>
  </appender>
  <root>
  <priority value="INFO" />
  <appender-ref ref="MeinAppender" />
  </root>
  </log4j:configuration>

最佳答案

您的类LogTest位于stdName包中,并且它的构造函数具有package-private访问权限。似乎 Main 类位于 stdName 之外的某个包中,因此编译器提示 LogTest() 构造函数在 中不可见Main 的包。将 LogTest 的构造函数更改为 public。

关于java - log4j 记录器不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13046565/

相关文章:

java - Android - java.lang.RuntimeException :App is crashing as soon as it launches

java - 如何将现有的过程代码转换为使用类?

java - Log4j 不会在删除时重新创建文件

java - jUnit + jMock 和 log4j

java - 在 Eclipse 中构建、版本控制、测试、归档 Java 项目的最佳实践?

iphone - 如何开始一个同时输出 iPhone 和 iPad 的项目?

java - 在 java 中为 ImageView 设置图像的代码?

Java - 如果 JBDC 成功连接则切换 Jframe

java - log4j FileAppender 是线程安全的吗?我可以即时更改文件名吗?

c++ - Qt项目结构