Вопросительный знак вместо имени класса в сообщении Log4j

#java #logging #log4j

#java #ведение журнала #log4j

Вопрос:

Я получаю вопросительный знак там, где должны отображаться имя класса и номер строки.

Вот мой log4j.properties файл

 logfile=C:/Softwares/logFiles

log4j.rootLogger=ERROR, generalDebug, generalError

log4j.appender.generalDebug=org.apache.log4j.RollingFileAppender
log4j.appender.generalDebug.File=${logfile}/debug.log
log4j.appender.generalDebug.MaxFileSize=10MB
log4j.appender.generalDebug.MaxBackupIndex=10
log4j.appender.generalDebug.layout=org.apache.log4j.PatternLayout
log4j.appender.generalDebug.layout.ConversionPattern=[%-5p] %d{ISO8601}|%r %C|%L|%x - %m%n
log4j.appender.generalDebug.Threshold=DEBUG

log4j.appender.generalError=org.apache.log4j.RollingFileAppender
log4j.appender.generalError.File=${logfile}/error.log
log4j.appender.generalError.MaxFileSize=10MB
log4j.appender.generalError.MaxBackupIndex=10
log4j.appender.generalError.layout=org.apache.log4j.PatternLayout
log4j.appender.generalError.layout.ConversionPattern=[%-5p] %d{ISO8601}|%r %C|%L|%x - %m%n
log4j.appender.generalError.Threshold=ERROR

#######################################################################

log4j.logger.Logging=DEBUG, HipDebug, HipError
log4j.additivity.Logging=false

log4j.appender.HipDebug=org.apache.log4j.RollingFileAppender
log4j.appender.HipDebug.File=${logfile}/HipDebug.log
log4j.appender.HipDebug.MaxFileSize=10MB
log4j.appender.HipDebug.MaxBackupIndex=10
log4j.appender.HipDebug.layout=org.apache.log4j.PatternLayout
log4j.appender.HipDebug.layout.ConversionPattern=[%-5p] %d{ISO8601}|%r %C|%L|%x - %m%n
log4j.appender.HipDebug.Threshold=DEBUG

log4j.appender.HipError=org.apache.log4j.RollingFileAppender
log4j.appender.HipError.File=${logfile}/HipError.log
log4j.appender.HipError.MaxFileSize=10MB
log4j.appender.HipError.MaxBackupIndex=10
log4j.appender.HipError.layout=org.apache.log4j.PatternLayout
log4j.appender.HipError.layout.ConversionPattern=[%-5p] %d{ISO8601}|%r %C|%L|%x - %m%n
log4j.appender.HipError.Threshold=ERROR
  

Журнал я получаю как на уровне ОТЛАДКИ, так и на уровне ОШИБОК.

 [ERROR] 2019-04-11 22:40:30,975|0 ?|?| - I'm Writing
[DEBUG] 2019-04-11 22:40:30,975|0 ?|?| - I'm Writing
  

Вот мой код:

 PropertyConfigurator.configure("C:\Softwares\ConfigFiles\log4j.properties");
    Logger logger = Logger.getLogger(Logeverything.class);
    logger.log(Logeverything.class.getCanonicalName(), Level.ERROR, "I'm Writing", null);
  

Может кто-нибудь, пожалуйста, скажите мне, что здесь не так?

Спасибо

Ответ №1:

Используйте logger.error("I'm Writing"); вместо logger.log(Logeverything.class.getCanonicalName(), Level.ERROR, "I'm Writing", null);

Logeverything.java

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

public class Logeverything {

    static {
        PropertyConfigurator.configure("src/main/resources/ConfigFiles/log4j.properties");
    }

    private static Logger logger = Logger.getLogger(Logeverything.class);

    public static void main(String[] args) {
        logger.error("I'm Writing");
    }
}
  
 $ cat error.log
[ERROR] 2019-04-11 10:56:16,302|0 Logeverything|14| - I'm Writing
  

Комментарии:

1. Теперь он печатается нормально, но почему он показывает вопросительный знак так, как я использую?