Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / log4j: как обработать ошибку открытия файла свойств log4j.properties? / 7 сообщений из 7, страница 1 из 1
13.11.2012, 09:32:32
    #38035684
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j: как обработать ошибку открытия файла свойств log4j.properties?
Добрый день!

Есть несколько разных сервисов на сервере приложения. Для логирования используется log4j. Для каждого сервиса сделан отдельный файл со свойствами log4j.properties, т.к. апендеров много и описывать их в одном файле свойств для всех сервисов не стал, т.к. чем больше файл, тем больше времени на его обработку...
Для открытия файла свойств использую PropertyConfigurator.configure("d:/temp/log4j.properties"). Но если файла свойств не существует, то log4j сам обрабатывает исключение и работа моего приложения продолжается без прерывания.

Как обработать ошибку открытия файла свойств log4j?
...
Рейтинг: 0 / 0
13.11.2012, 10:35:30
    #38035794
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j: как обработать ошибку открытия файла свойств log4j.properties?
pulpДобрый день!

Есть несколько разных сервисов на сервере приложения. Для логирования используется log4j. Для каждого сервиса сделан отдельный файл со свойствами log4j.properties, т.к. апендеров много и описывать их в одном файле свойств для всех сервисов не стал, т.к. чем больше файл, тем больше времени на его обработку...
Для открытия файла свойств использую PropertyConfigurator.configure("d:/temp/log4j.properties"). Но если файла свойств не существует, то log4j сам обрабатывает исключение и работа моего приложения продолжается без прерывания.

Как обработать ошибку открытия файла свойств log4j?
точно так же как ты и описал
чо сложновото я непайму?

Код: java
1.
2.
3.
4.
if not new File("d:/temp/log4j.properties").exists
  throw RuntimeException("d:/temp/log4j.properties dsnt exist")

PropertyConfigurator.configure("d:/temp/log4j.properties")
...
Рейтинг: 0 / 0
13.11.2012, 11:27:01
    #38035891
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j: как обработать ошибку открытия файла свойств log4j.properties?
Ок. А если "кривой" файл со свойствами. Т.е. хотелось бы понять, что файл есть и log4j его успешно открыл и распарсил. Или много хочу?
...
Рейтинг: 0 / 0
13.11.2012, 12:37:33
    #38036080
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j: как обработать ошибку открытия файла свойств log4j.properties?
pulpТ.е. хотелось бы понять, что файл есть и log4j его успешно открыл и распарсил. Или много хочу?много, да, если использовать PropertyConfigurator.configure:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
try {
      istream = new FileInputStream(configFileName);
      props.load(istream);
      istream.close();
    }
    catch (Exception e) {
      LogLog.error("Could not read configuration file ["+configFileName+"].", e);
      LogLog.error("Ignoring configuration file [" + configFileName+"].");
      return;
    }



а если использовать org.apache.log4j.PropertyConfigurator#doConfigure(Properties, LoggerRepository), то
"файл есть и мы успешно открыли и распарсили" - можно
...
Рейтинг: 0 / 0
13.11.2012, 13:02:38
    #38036133
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j: как обработать ошибку открытия файла свойств log4j.properties?
Но если есть проблема в файле свойств, например неверно указано имя аппендера, то такая ошибка не перехватывается.

log4j сам перехватывает это исключение и пишет в System.out:
Код: java
1.
2.
3.
log4j:WARN No appenders could be found for logger (TstService.TstCons).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.



Как-то можно подобные ошибки обработать?
...
Рейтинг: 0 / 0
13.11.2012, 13:28:53
    #38036180
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j: как обработать ошибку открытия файла свойств log4j.properties?
Получилось сделать через метод exists класса LogManager. Нашёл на ощупь, в документации по этому методу нет описания. В общем он при отсутствии аппендера не создаёт объект Logger, а возвращает null. И при последующем обращении к нему генерится исключение NullPointerException. На мой взгляд нормально:
Код: java
1.
2.
3.
PropertyConfigurator.configure("d:/temp/log4j.properties");
logger = LogManager.exists("TstService.TstCons");
logger.info("PostConstruct");  //Exception!



Наткнулся ещё на одну проблему - не работает назначение уровня вывода. Точнее в примере ниже уровень берется DEBUG от логера TstService.TstConsumer, т.е. в TstService тоже пишется всё до DEBUG. А если для TstService.TstConsumer поставлю ERROR, а для TstConsumer DEBUG, то в оба лога пишутся только ошибки. Помогите, в чём может быть засада?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
log4j.appender.srv=org.apache.log4j.DailyRollingFileAppender
log4j.appender.srv.file=d:/temp/TstService.log
log4j.appender.srv.append=true
log4j.appender.srv.bufferedIO=false
log4j.appender.srv.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.srv.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.srv.layout.conversionPattern=%d{ISO8601} [%-5.5p][%12.12c{1}][%9.9x] - %m%n

log4j.appender.consum=org.apache.log4j.DailyRollingFileAppender
log4j.appender.consum.file=d:/temp/TstConsumer.log
log4j.appender.consum.append=true
log4j.appender.consum.bufferedIO=false
log4j.appender.consum.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.consum.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.consum.layout.conversionPattern=%d{ISO8601} [%-5.5p][%9.9x] - %m%n

log4j.logger.TstService=ERROR, srv
log4j.logger.TstService.TstConsumer=DEBUG, consum
...
Рейтинг: 0 / 0
13.11.2012, 15:51:50
    #38036485
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
log4j: как обработать ошибку открытия файла свойств log4j.properties?
Получилось с помощью свойства threshold аппендера:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
log4j.appender.srv=org.apache.log4j.DailyRollingFileAppender
log4j.appender.srv.file=d:/temp/TstService.log
log4j.appender.srv.append=true
log4j.appender.srv.bufferedIO=false
log4j.appender.srv.threshold=ERROR
log4j.appender.srv.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.srv.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.srv.layout.conversionPattern=%d{ISO8601} [%-5.5p][%12.12c{1}][%9.9x] - %m%n

log4j.appender.consum=org.apache.log4j.DailyRollingFileAppender
log4j.appender.consum.file=d:/temp/TstConsumer.log
log4j.appender.consum.append=true
log4j.appender.consum.bufferedIO=false
log4j.appender.consum.threshold=INFO
log4j.appender.consum.datePattern='.'yyyy-MM-dd'.log'
log4j.appender.consum.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.consum.layout.conversionPattern=%d{ISO8601} [%-5.5p][%9.9x] - %m%n

log4j.logger.TstService.TstConsumer=, srv, consum
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / log4j: как обработать ошибку открытия файла свойств log4j.properties? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]