ПРАКТИЧЕСКОЕ РУКОВОДСТВО: обертка API Write Python? [закрытый]

Это просто предупреждение.

Исправление

Это происходит, когда файлы конфигурации по умолчанию log4j.properties и log4j.xml не могут быть найдены, и приложение не выполняет явной конфигурации.

Чтобы исправить это, просто создайте / скопируйте log4j.properties или log4j.xml в свое местоположение по пути classpath (как правило, такие же, как файлы jar).

Необязательно задайте опцию java: -Dlog4j.configuration=file:///path/to/log4j.properties.

log4j использует Thread.getContextClassLoader().getResource() для поиска файлов конфигурации по умолчанию и напрямую не проверяет файловую систему. Знание соответствующего места размещения log4j.properties или log4j.xml требует понимания стратегии поиска используемого загрузчика классов. log4j не предоставляет конфигурацию по умолчанию, поскольку вывод на консоль или файловая система может быть запрещен в некоторых средах.

blockquote>

Отладка

Для отладки вы можете попробуйте использовать параметр -Dlog4j.debug=true.

Конфигурация log4j.properties

Пример конфигурации log4j.properties:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

Вот еще один файл конфигурации, который использует несколько добавок:

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

Apache Solr

Если вы используете Solr , скопируйте /example/resources/log4j.properties в местоположение по пути class .

Конфигурация образца log4j.properties из Solr выглядит следующим образом:

#  Logging level
solr.log=logs/
log4j.rootLogger=INFO, file, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n

#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9

#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n

log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN

# set to INFO to enable infostream log messages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF

См. также:

20
задан hanksims 5 February 2009 в 19:00
поделиться

5 ответов

Я не могу указать на Вас ни на какую статью о том, как сделать это, но я думаю, что существует несколько библиотек, которые могут быть хорошими моделями о том, как разработать Ваше собственное.

PyAws, например. Я не видел исходный код, таким образом, я не могу сказать Вам, насколько хороший это как пример кода, но функции, и примерами использования в их веб-сайте должна быть полезная модель

дизайна, Универсальный Синтаксический анализатор Канала не является оберткой для веб-сервиса (это - библиотека синтаксического анализатора RSS), но это - яркий пример дизайна, который располагает по приоритетам гибкость использования и скрывающиеся детали реализации. Я думаю, что можно получить очень хорошие идеи использования для обертки там.

3
ответ дан 30 November 2019 в 01:35
поделиться

Эта учебная страница могла быть хорошим стартовым местом (но она не содержит все, в чем Вы нуждаетесь).

1
ответ дан 30 November 2019 в 01:35
поделиться

Моя любимая комбинация является httplib2 (или pycurl для производительности) и simplejson. Поскольку REST - больше "способ дизайна" затем реальный "протокол", там не действительно допускающая повторное использование вещь (что я знаю о). На Ruby у Вас есть что-то как ActiveResource. И честно говоря, даже который просто выставил бы некоторые таблицы как веб-сервис, тогда как питание xml/json состоит в том, что они больше похожи на "представления", которые могут содержать несколько объектов, оптимизированных для Вашего приложения. Я надеюсь, что это имеет смысл :-)

2
ответ дан 30 November 2019 в 01:35
поделиться

Вам стоит взглянуть на PyFacebook. Это оболочка Python для API Facebook, и это один из самых хорошо выполненных API, которые я когда-либо использовал.

0
ответ дан 30 November 2019 в 01:35
поделиться

Вы можете проверить pythenic jobs , красивую, простую, но хорошо сформированную «оболочку Python вокруг Authentic Jobs ... API» в качестве хорошего примера. Вот чем я сейчас занимаюсь :)

0
ответ дан 30 November 2019 в 01:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: