2014-12-22 2 views
0

я иметь такую ​​конфигурацию в моем log4j2.xml файл:журнала с конфигурацией log4j не работает

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Appenders> 
    <File name="FileLogger" fileName="HelloLog4j.log" append="false"> 
     <PatternLayout pattern="%d %t %-5p %c{2} - %m%n"/> 
    </File> 
    <Console name="STDOUT" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> 
    </Console> 
    </Appenders> 
    <Loggers> 
    <Logger name="hello" level="trace"> 
     <AppenderRef ref="FileLogger"/> 
    </Logger> 
    <Root level="trace"> 
     <AppenderRef ref="STDOUT"/> 
    </Root> 
    </Loggers> 
</Configuration> 

я положил этот файл в И/ресурсах, и я следовать этому руководству: Guide , но когда я запускаю мой проект у меня есть эта ошибка:

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. 
+0

Возможный дубликат http://stackoverflow.com/questions/25487116/log4j2-configuration-no-log4j2-configuration-file-found –

+0

возможно dup, но моя проблема в том, что у меня есть этот файл в моем пути к классу .. но не работает .. –

ответ

0

XML-файл должен быть внутри самой src папки, а не внутри src/resources или что-либо внутри него, он должен быть на корневом уровне folder.However, если это не сработает вот немного другой способ сделать это.

Чтобы настроить регистратор вручную, вы можете использовать DOM Configurator.

Ниже приведен фрагмент примера, в котором описывается, как вы можете его использовать.

private static org.apache.log4j.Logger logger; 

public static Logger getLogger(){ 
    if(logger == null){ 
     logger= LogManager.getLogger(ClassName.class); 
     DOMConfigurator.configure("path/to/log4jxml"); 
    } 
    return logger; 

} 

имя класса будет класс, в котором вы инстанцирования class.It это хорошая практика, чтобы использовать Singleton шаблон проектирования для этого в пользовательском классе, а затем инстанцировании его через getLogger method.Don't забудьте сделайте свой конструктор закрытым.

Edit:

Образец конфигурации для шаблона преобразования консоли appender.The является расположение дата.

<appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" 
       value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> 
    </layout> 
</appender> 
<root> 
    <level value="INFO" /> 
    <appender-ref ref="console" /> 
</root> 
+0

, но в web.xml я должен что-то добавить? –

+0

Это не связано с web.xml. Сначала попробуйте поместить log4j2.xml в корень src. Если это не сработает, попробуйте использовать код, который я дал, чтобы создать экземпляр экземпляра Logger. Но это было бы отличаются, если вы используете инструмент построения, такой как Maven или что-то в этом роде, но в любом случае код должен работать. – Madusudanan

+0

Конфигурация теперь работает, но ничего не печатает ... Я пытаюсь logger.debug («Hello world - debug log»); \t logger.info («Hello world - info log»); \t logger.warn («Hello world - warn log»); –

1

Я хотел бы избежать использования DOMConfigurator, придерживаться стандарта: положить log4j2.xml в вашем пути к классам. Если это зависит от вашего приложения и среды выполнения.

Смежные вопросы