Невозможно настроить log4j в профиле WebSphere Liberty для нескольких приложений

Я развертываю несколько веб-приложений на свободе, каждый из которых имеет свои собственные файлы конфигурации log4j. Файл конфигурации log4j в каждой из этих WAR находится в папке WEB-INF/classes WAR. Фрагмент web.xml, который добавляет конфигурацию log4j, выглядит следующим образом:

<context-param>
                <param-name>log4jConfiguration</param-name>
                <param-value>classpath:portal-log4j2.xml</param-value>
        </context-param>

Кажется, это работает на всех других серверах приложений Tomcat и Jboss, но не в профиле WebSphere Liberty. Даже в профиле WebSphere Basic работает то же самое. Указание -Dlog4j.configurationFile в jvm.options не будет работать для меня, так как у меня есть несколько приложений

Я просмотрел Websphere Liberty: как указать местоположение конфигурации log4j2?

и так же пробовал. Для меня это привело к ошибке ниже

Exception = javax.xml.stream.XMLStreamException
Source = com.ibm.ws.artifact.loose.internal.LooseContainerFactoryHelper
probeid = 126
Stack Dump = javax.xml.stream.XMLStreamException: ParseError at [row,col]:[8,46]
Message: found: CHARACTERS, expected START_ELEMENT or END_ELEMENT
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.nextTag(XMLStreamReaderImpl.java:1361)
        at com.ibm.ws.artifact.loose.internal.LooseContainerFactoryHelper.createContainer(LooseContainerFactoryHelper.java:80)

Мой log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="error" name="mbaasportal" packages="com.kony.mobilefabric.logger">
    <!-- Filter to control log level dynamically. The name of the key should match with key in TenantContextFilter.java -->
	<DynamicLogFilter key="KONY_PORTAL_DYNAMIC_LOG_LEVEL" />
	<Appenders>
        <CustomRollingFile name="logfileappender" fileName="${sys:LOG_LOCATION}/mbaasportal.log" append="true" filePattern="${sys:LOG_LOCATION}/mbaasportal.log.%i">
            <MobileFabricPatternLayout>
                <ProductName>console.portal</ProductName>
            </MobileFabricPatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </CustomRollingFile>

        <Console name="dockerappender" target="SYSTEM_OUT">            
            <JsonLayout compact="true" eventEol="true" properties="true" locationInfo="true">
                <KeyValuePair key="fabricService" value="console.portal"/>
            </JsonLayout>
        </Console>

        <Console name="consoleappender" target="SYSTEM_OUT"> 
            <MobileFabricPatternLayout> 
                <ProductName>console.portal</ProductName>
            </MobileFabricPatternLayout> 
        </Console>

        <Socket name="SYSLOGappender" host="localhost" port="514" protocol="UDP">
            <Rfc3164SyslogLayout charset="ISO-8859-1" ProductName="console.portal"/>
        </Socket>
    </Appenders>

    <Loggers>
    
    	<Logger name="org.hibernate" level="ERROR" additivity="false">
            <AppenderRef ref="${sys:LOG_OPTION}appender"/>
        </Logger>

        <Logger name="org.springframework" level="ERROR" additivity="false">
            <AppenderRef ref="${sys:LOG_OPTION}appender"/>
        </Logger>

        <Logger name="httpclient" level="ERROR" additivity="false">
            <AppenderRef ref="${sys:LOG_OPTION}appender"/>
        </Logger>
        
        <Logger name="com.kony.mbaas.portal.wsclient.RestTemplateWrapper" level="ERROR" additivity="false">
            <AppenderRef ref="${sys:LOG_OPTION}appender"/>
        </Logger>

        <Root level="${sys:LOG_LEVEL}">
            <AppenderRef ref="${sys:LOG_OPTION}appender"/>
        </Root>
    </Loggers>
</Configuration>

Любое руководство по тому же очень ценится


person sanil talaulikar    schedule 17.01.2020    source источник
comment
Похоже, вы говорите, что только связанный подход вызывает ошибку синтаксического анализа XML, верно? Что произойдет с вашей context-param первой попыткой. Какие-то ошибки зарегистрированы, или просто настройка вообще не подхватывается?   -  person dbreaux    schedule 17.01.2020
comment
О, и, может быть, опубликуйте копию вашего XML-файла log4j?   -  person dbreaux    schedule 17.01.2020
comment
обновлен с помощью log4jxml, и да, в предыдущем подходе параметр не подбирается, а log4j не инициализируется. Ошибка специфична для последнего связанного подхода   -  person sanil talaulikar    schedule 18.01.2020


Ответы (1)


Я работал с Брайаном из службы поддержки IBM, чтобы решить эту проблему. Похоже, проблема характерна для Log4j2 2.8 в Liberty, и обновление до версии 2.13 решило проблему. Для получения подробной информации см. следующее:

https://developer.ibm.com/answers/questions/526956/log4j-config-file-present-in-webapp-not-loaded-in.html

person sanil talaulikar    schedule 23.01.2020