2014-02-06 2 views
1

Я пытаюсь получить log4j-2.0-b9 для работы с банкой, но не смог. Я хочу, чтобы файл свойств находился за пределами .jar и в том же каталоге, что и файл .jar, но log4j, похоже, не забирает его и по умолчанию печатает на консоли. Мой конфигурационный файл выглядит следующим образом:log4j для jar не будет читать конфигурационный файл

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration debug="true" 
       xmlns:log4j='http://jakarta.apache.org/log4j/'> 

<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n"/> 
    </layout> 
</appender> 

<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="append" value="false"/> 
    <param name="file" value="C:\Users\abhishek\workspace\log4jtest\log.log"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/> 
    </layout> 
</appender> 

<root> 
    <level value="ALL"/> 

    <appender-ref ref="fileAppender"/> 
</root> 

</log4j:configuration> 

И мой JAVA код выглядит следующим образом:

package com.test; 

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

public class Test { 

private static Logger logger = LogManager.getLogger(Test.class); 

public static void main(String[] args) { 
    logger.error("Test error"); 
} 
} 

Спасибо.

+0

Как вы начинаете Java? Что такое CLASSPATH? –

+0

Я пробовал 'java -jar application.jar' и' java -jar -Dlog4j.configuration = file: "log4j.xml" application.jar'. Никто не работал. –

+1

try '' '-Dlog4j.configuration =" log4j.xml "' '' –

ответ

1

Конфигурация в вопросе использует формат log4j-1.2. Log4j-2.0 использует другой формат XML. Файл конфигурации также следует называть log4j2.xml вместо log4j.xml. Самый простой способ настройки - поместить файл log4j2.xml в путь к классам.

В онлайн-документах есть много примеров конфигураций: например, для File Appender и Console.

Обратите внимание: как файлы журнала log4j-api-2.0 и log4j-core-2.0 в пути к классам.

1

Файл конфигурации log4j должен находиться в видимом классе. Если вы используете java из jar, то этот файл jar - это ваш путь к классам, поэтому конфигурация log4j должна быть в этой банке.

Если вы не хотите этого делать, возможно, вы можете добавить заголовок «Class-Path» в манифест файла jar. Я сам этого не пробовал, но описано here.

+0

Пробовал, что. По-прежнему такая же ошибка, как и раньше. ОШИБКА StatusLogger Не удалось найти реализацию журнала, используя SimpleLogger ERROR Test Test erro –

+0

Не java -jar игнорировать предоставленный путь к классам? Вам нужно сделать это вручную: 'java -cp ' и предоставить как jar, так и дополнительную директорию как путь к классам. –

+0

Да, я говорил слишком рано. Классpath игнорируется при использовании java -jar. –

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