Конфигурация Log4j – разные журналы в разные файлы ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Конфигурация Log4j – разные журналы в разные файлы

Сообщение Anonymous »

Для некоторых это может быть очень простой вопрос, но лично я считаю, что настройка Log4j кошмарно сложна, и что научиться выполнять операции на головном мозге может быть менее сложной задачей.

Я пытаюсь подключить несколько средств ведения журнала к разным файлам.
Вот что у меня есть в файле log4j.properties:

Код: Выделить всё

# Root logger option
log4j.rootLogger=INFO, file, admin

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/home/nick/logging/file.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n

log4j.appender.admin=org.apache.log4j.RollingFileAppender
log4j.appender.admin.File=/home/nick/logging/admin.log
log4j.appender.admin.MaxFileSize=1MB
log4j.appender.admin.MaxBackupIndex=1
log4j.appender.admin.layout=org.apache.log4j.PatternLayout
log4j.appender.admin.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n
А вот мое (очень простое) Java-приложение, используемое для проверки конфигурации:

Код: Выделить всё

public static void main(String[] args) throws Exception {

Properties resource = new Properties();
InputStream in = new FileInputStream("/home/nick/logging/log4j.properties");
resource.load(in);
PropertyConfigurator.configure(resource);

Logger admin = Logger.getLogger("admin");
Logger file = Logger.getLogger("file");

admin.info("hello admin");
file.info("hello file");
}
У меня есть 2 проблемы:

Одна проблема: я всегда получаю исключение в строке PropertyConfigurator.configure(resource );:

Код: Выделить всё

java.io.FileNotFoundException: /home/nick/logging (Is a directory)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.(FileOutputStream.java:212)
at java.io.FileOutputStream.(FileOutputStream.java:136)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:289)
at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:167)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:163)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:256)
Вторая проблема заключается в том, что оба сообщения записываются в оба журнала. Вот фактический результат:

Администратор файла: журнал:

Код: Выделить всё

2014-04-27 11:55:30 INFO  admin - hello admin
2014-04-27 11:55:30 INFO  file - hello file
Файл file.log:

Код: Выделить всё

2014-04-27 11:55:30 INFO  admin - hello admin
2014-04-27 11:55:30 INFO  file - hello file
Вот обязательный результат:

Администратор файла: log:

Код: Выделить всё

2014-04-27 11:55:30 INFO  admin - hello admin
Файл file.log:

Код: Выделить всё

2014-04-27 11:55:30 INFO  file - hello file
Что вызывает исключение и как добиться требуемого результата?

Подробнее здесь: https://stackoverflow.com/questions/233 ... rent-files

Вернуться в «JAVA»