【问题标题】:Log4j PropertyConfigurator.configure() will not accept a string in eclipseLog4j PropertyConfigurator.configure() 将不接受 eclipse 中的字符串
【发布时间】:2013-03-07 18:12:57
【问题描述】:

我有一个奇怪的问题,可能很简单,但我已经用谷歌搜索了 20 分钟,但没有解决

我正在尝试在 Eclipse 中使用 log4j。我下载了最新的 zip 并添加到我的类路径中。我通过从教程中复制创建了属性文件。属性文件位于我项目的根文件夹中,名为“log4j.properties”。该文件包含

#define the console appender
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender

# now define the layout for the appender
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# now map our console appender as a root logger, means all log messages will go to this     appender
log4j.rootLogger = DEBUG, consoleAppender

我的课如下,eclipse在PropertyConfigurator.configure()行出现如下错误。 此行有多个标记 - 标记 ""log4j.properties"" 的语法错误,删除此标记 - 标记的语法错误,错误的构造

但是 log4j 的 api 显示 propertyconfigurator 应该接受一个字符串。有什么建议么? -

package org.dnsdojo.ryanhost.GA.MuPlusOne;

import java.util.Random;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;


public class Genome
{
private static Logger logger = Logger.getLogger(Genome.class);
PropertyConfigurator.configure("log4j.properties");
byte[] genome;
Random rng = new Random();
String genomeString = "";

public Genome ( int stringLength, int motorSet )
{
    genome = new byte[ stringLength * 7 * motorSet]; // stringLength depends on how many bytes you wish to have. For the arpibot this is dependant on the number of sensor readings taken
    for (int i = 0; i < genome.length; i++)
    {
        genome[i] = (byte)rng.nextInt(2);
        genomeString += genome[i];
    }
    logger.debug(genomeString);     
}

public byte[] getGenome()
{
    return genome;
}

public byte[] mutate (float mutationStep)
{
    return genome;                                  //placeholder
}

}

【问题讨论】:

  • 你不能在课堂的任何地方执行任意代码!您需要将方法调用放在static{} 块、{} 块或某些方法中。

标签: java logging log4j


【解决方案1】:

您目前在类块中有PropertyConfigurator.configure,因此编译器正在抱怨。将语句(连同其他非声明性语句)移动到方法或 static 初始化程序块中。

【讨论】:

  • 哇,多么愚蠢>。> 在我的辩护中,我想我已经看这个太久了!不过谢谢
  • 由此引发了一个问题——一旦我修复了代码,我的记录器就会返回一些奇怪的行号。它正在跳过一些并复制其他一些。这是由于我的属性文件还是我的代码?
  • 很难说。检查您部署的代码是否与您当前的代码相对应,即不使用旧类版本运行。不确定您正在使用多少个记录器。查看additivity...
  • 谢谢,我会就此提出一个不同的问题。我尝试添加 log4j.additivity.consoleAppender = false 没有改变
  • @Reimeus 很抱歉,但your answer 是对的 :(
猜你喜欢
  • 2022-01-20
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多