Журнал доступа для конкретного приложения в Tomcat? - PullRequest
2 голосов
/ 13 июля 2011

Я пытаюсь настроить независимые журналы доступа для моего приложения .war в tomcat, но я не могу понять, что не получается.

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

Я понимаю, что для этого я должен создать свой собственный файл конфигурации контекста с AccessLogValve, указывающим, куда я буду писать.

Я создал META-INF / context.xml в файле WAR моего приложения с содержанием:

<Context path="/Stubby">
    <Valve class="org.apache.catalina.valves.AccessLogValve"
                    rotatable="true"
                    directory="/var/SP/log/stubby"
                    prefix="access.log_"
                    suffix=""
                    fileDateFormat="yyyyMMdd_HH"
                    pattern="combined"
                    buffered="false"
                    resolveHosts="false"
                    />
</Context>

При запуске tomcat я вижу, что этот файл копируется в conf / Catalina / localhost / Stubby.xml, но во время процедуры загрузки приложения возникает ошибка синтаксического анализа:

SEVERE: Begin event threw exception
java.lang.NullPointerException
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
(...)
Jul 13, 2011 6:16:12 PM org.apache.catalina.startup.ContextConfig processContextConfig
SEVERE: Parse error in context.xml for /Stubby
java.lang.NullPointerException
        at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2806)
        at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2832)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1359)

Что здесь не так? Я пропускаю какое-либо обязательное свойство в декларации?

Ответы [ 2 ]

5 голосов
/ 14 июля 2011

Глупая ошибка ... Там, где читается

<Valve class="org.apache.catalina.valves.AccessLogValve"

, должно быть

<Valve className=...

, после того, как это исправление, конфигурация работает как положено, развернуто из META-INF.

0 голосов
/ 13 июля 2011

Я подозреваю, что вы имеете дело с проблемой загрузчика классов: классы вентилей могут быть недоступны загрузчику классов, который копирует контекст xml.Не думаю, что так будет, но если вы удалите файл context.xml из META-INF и скопируете его в conf / Catalina / localhost / Stubby.xml, клапан будет работать правильно?

...