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

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

Как обработать ошибку открытия файла свойств log4j?
...
Рейтинг: 0 / 0
log4j: как обработать ошибку открытия файла свойств log4j.properties?
    #38035794
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
log4j: как обработать ошибку открытия файла свойств log4j.properties?
    #38035891
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок. А если "кривой" файл со свойствами. Т.е. хотелось бы понять, что файл есть и log4j его успешно открыл и распарсил. Или много хочу?
...
Рейтинг: 0 / 0
log4j: как обработать ошибку открытия файла свойств log4j.properties?
    #38036080
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
log4j: как обработать ошибку открытия файла свойств log4j.properties?
    #38036133
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но если есть проблема в файле свойств, например неверно указано имя аппендера, то такая ошибка не перехватывается.

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
log4j: как обработать ошибку открытия файла свойств log4j.properties?
    #38036180
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось сделать через метод 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
log4j: как обработать ошибку открытия файла свойств log4j.properties?
    #38036485
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось с помощью свойства 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
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / log4j: как обработать ошибку открытия файла свойств log4j.properties?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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