Подтвердить что ты не робот

Пожалуйста, правильно инициализируйте систему log4j. При запуске веб-службы

Может быть, это глупо спрашивать об этом, но я смущен. Я ссылался на Конфигурирование свойства Log4j, но, похоже, не помогает.

Я написал простой веб-сервис HelloWorld. И при запуске я получаю ошибку примерно так:

log4j: WARN Для журнала не найдено ни одного приложения (org.apache.axis.transport.http.AxisServlet). log4j: WARN Пожалуйста, правильно инициализируйте систему log4j.

Я не знаю, почему это происходит.

Я создаю веб-сервис, используя Eclipse и развернутый в Tomcat 6.0. Я проверяю Руководство разработчика Axis и в соответствии с ними

log4j.configuration = log4j.properties Используйте это системное свойство, чтобы указать имя файла конфигурации Log4J. Если не указано, конфигурационный файл по умолчанию - log4j.properties. Файл log4j.properties предоставляется в axis.jar.

Я не нашел log4j.properties в axis.jar.

Любая помощь по этому поводу?

4b9b3361

Ответ 1

Эти сообщения являются чем-то сложным, достаточно, чтобы люди создали это, чтобы сделать его более ясным: https://issues.apache.org/bugzilla/show_bug.cgi?id=25747

Какая сложность в них заключается в том, что предупреждения записываются, если Log4j не может найти файл log4j.properties (или log4j.xml), но также и файл в порядке и dandy, но его содержимое не завершено из точки конфигурации зрения.

Следующий абзац взят отсюда: http://svn.apache.org/repos/asf/logging/log4j/tags/v1_2_9/docs/TROUBLESHOOT.html

Выход журнала записывается в цель с помощью приложения. Если никакие приставки не привязаны к какой-либо категории, ни к каким-либо из ее предков, вы получите следующее сообщение при попытке регистрации:

log4j: No appenders could be found for category (some.category.name).
log4j: Please initialize the log4j system properly.

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

Вы можете найти информацию о том, как настроить корневой журнал (log4j.rootLogger) в документации log4j , в основном добавляя что-то простое, как это в начале файла:

log4j.rootLogger=debug, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

Это должно очистить те сообщения WARN, которые вы получаете при запуске (убедитесь, что у вас еще нет приложения с именем stdout; также обратите внимание на уровень, который вы даете корневому журналу, debug будет очень многословным, и каждая библиотека в вашем приложении начнет писать материал на консоль).

Как о log4j.properties/log4j.xml, я предлагаю разместить этот файл в /WEB-INF/classes, так как важно иметь его для различных настроек (активирование/дезактивация журналов, изменение уровней журналов и т.д.). Вы также можете использовать его внутри JAR в classpath (как указано в вашем комментарии), но он будет заключен в архив (надеюсь, в нужном месте внутри архива) и будет не так прост в обращении, как если бы он были в /WEB-INF/classes.

Ответ 2

Вам нужно создать свой собственный log4j.properties в папке пути к классу.

Ответ 3

Хорошо, если вы уже создали log4j.properties, вы добавили бы свой путь к пути к классам, чтобы он был найден во время выполнения.
Да, thingy будет искать этот файл в пути к классам.
Поскольку вы сказали, что смотрите в ось и не нашли ее, я предполагаю, что у вас нет log4j.properties, так что здесь грубый, но полный пример.
Создайте его где-нибудь и добавьте в свой путь к классам. Поместите его, например, в c:/proj/resources/log4j.properties

В вашем пути к классу вы просто добавляете.......; c:/proj/resources

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=c:/project/resources/t-output/log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Ответ 4

Предупреждение Не найдено никаких добавлений для журнала, что вы используете систему регистрации log4j, но вы не добавили каких-либо добавок (например, FileAppender, ConsoleAppender, SocketAppender, SyslogAppender и т.д.) в файл конфигурации или отсутствует файл конфигурации.

Существует три способа настройки log4j: с файлом свойств (log4j.properties), с XML файлом и кодом Java (rootLogger.addAppender(new NullAppender());).

Если у вас есть файл свойств (например, при установке Solr), вам необходимо поместить этот файл в каталог classpath.

CLASSPATH

Вот несколько предложений команд, как определить значение вашего пути к классу:

$ echo $CLASSPATH
$ ps wuax | grep -i classpath
$ grep -Ri classpath /etc/tomcat? /var/lib/tomcat?/conf

или из Java: System.getProperty("java.class.path").

Tomcat

Если вы используете Tomcat, вы можете поместить свой log4j.properties в папку: /usr/share/tomcat?/lib/ или /var/lib/tomcat?/webapps/*/WEB-INF/lib/.

Solr

Для справки Solr log4j.properties выглядит так:

#  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

Ответ 5

Если приведенный ниже статус присутствует в вашем классе, то ваш файл log4j.properties должен находиться в папке java source (src), если он является исполняемым jar, он должен быть упакован в jar, а не в отдельный файл.

static Logger log = Logger.getLogger(MyClass.class);

Спасибо,